您的位置:首页 > 其它

二叉树的建立和中序、先序、后序遍历

2012-10-30 20:51 441 查看
#include<stdio.h>
#include<stdlib.h>

#define TYPE     int

typedef struct Btree {
TYPE data;
struct Btree *lchild;
struct Btree *rchild;
}BTREE;

BTREE *btree_creat()
{
BTREE *tree;
TYPE data;

printf("input num\n");
scanf("%d", &data);
if (data == -1)
{
tree = NULL;
}
else
{
tree = (BTREE *)malloc(sizeof(BTREE));
if (tree == NULL)
{
return NULL;
}
tree->data = data;
//		tree->lchild = NULL;
//		tree->rchild = NULL;
tree->lchild = btree_creat();
tree->rchild = btree_creat();
}

return tree;
}

void btree_destroy(BTREE *tree)
{
if (tree != NULL)
{
btree_destroy(tree->lchild);
tree->lchild = NULL;
btree_destroy(tree->rchild);
tree->rchild = NULL;
}
}

void traverse_in_order(BTREE *tree)
{
if (tree != NULL)
{
traverse_in_order(tree->lchild);
printf("%d\n",tree->data);
traverse_in_order(tree->rchild);
}
}

void traverse_pre_order(BTREE *tree)
{
if (tree != NULL)
{
printf("%d\n", tree->data);
traverse_pre_order(tree->lchild);
traverse_pre_order(tree->rchild);
}
}

void traverse_post_order(BTREE *tree)
{
if (tree != NULL)
{
traverse_post_order(tree->lchild);
traverse_post_order(tree->rchild);
printf("%d\n", tree->data);
}
}

int main(void)
{
BTREE *bin_tree = NULL;

bin_tree = btree_creat();
printf("in order traverse\n");
traverse_in_order(bin_tree);
printf("pre order traverse\n");
traverse_pre_order(bin_tree);
printf("post order traverse\n");
traverse_post_order(bin_tree);

btree_destroy(bin_tree);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐