Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244718
  • 博文数量: 76
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 660
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-17 21:43
文章分类
文章存档

2011年(1)

2010年(9)

2009年(20)

2008年(46)

我的朋友

分类: C/C++

2008-11-07 11:57:41

#include
#include
#define NODE_LEN 5
struct BTree{
 int data;
 struct BTree *left;
 struct BTree *right;
};
typedef struct BTree BTreeNode;
typedef struct BTree *p_BTree;
//插入节点
p_BTree InsertNode(p_BTree root, int node)
{
 p_BTree newnode;
 p_BTree currentnode;
 p_BTree parentnode;
 newnode = (p_BTree)malloc(sizeof(BTreeNode));
 newnode->data = node;
 newnode->left = NULL;
 newnode->right = NULL;

 if(!root)
  return newnode;
 else
 {
  currentnode = root;
  while(currentnode!=NULL)
  {
   parentnode = currentnode;
   if(currentnode->data > node)
    currentnode = currentnode->left;
   else
    currentnode = currentnode->right;
  }
  if(parentnode->data > node)
   parentnode->left = newnode;
  else
   parentnode->right = newnode;
 }
 return root;
}
//建立二叉链表
p_BTree Create_btree(int *data, int len)
{
 int i;
 p_BTree root = NULL;
 
 for(i=0;i < len; i++)
 {
  root = InsertNode(root, data[i]);
 }
 return root;
}

//中序遍历二叉树
void InorderTraverse(p_BTree point)
{
 if(point!=NULL)
 {
  InorderTraverse(point->left);
  printf("%d\n",point->data);
  InorderTraverse(point->right);
 }
 
}

void main()
{
 int value;
 int index = 0;
 int nodelist[NODE_LEN];
 p_BTree root = NULL;
 printf("please input elemnts to create btree(exit 0)\n");
 
 scanf("%d", &value);
 while(value!=0)
 {
  nodelist[index] = value;
  index++;
  scanf("%d",&value);
 }
 root = Create_btree(nodelist, NODE_LEN);
 //traverse btree;
 printf("the inorder traverse results:\n");
 InorderTraverse(root);
 printf("\n");
}
阅读(850) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

yongwenli20082008-12-12 15:30:56

您好,我是经过实验过的才放进博客的,是没有问题的; 我回去再看看,是否复制的时候出问题了。过后再给你回复

chinaunix网友2008-12-11 20:21:08

我编译时没任何错误,但运行时任你怎么输入数据,都没反应