#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");
}
阅读(880) | 评论(2) | 转发(0) |