永发信息网

程序设计:用递归完成二叉树的遍历(先序,中序,后序,最好有层序)!

答案:2  悬赏:60  手机版
解决时间 2021-05-17 19:10
程序设计:用递归完成二叉树的遍历(先序,中序,后序,最好有层序)!
最佳答案
#include <stdio.h>
#include <stdlib.h>

typedef struct _btree {
int v;
struct _btree* l;
struct _btree* r;
}**btree, *node;


node insert(btree r, int v)
{
node t, p, n;
t = (node)malloc(sizeof(_btree));
t->v = v;
t->l = t->r = NULL;

p = NULL, n = *r;
while(n) {
p = n;
n = v < n->v ? n->l : n->r;
}
return (p ? v < p->v ? p->l : p->r : *r) = t;
}

node create(int* beg, int* end)
{
node root;
root = NULL;
while(beg != end)
insert(&root, *beg++);
return root;
}

void prevorder(node root)
{
if(root) {
printf("%d ", root->v);
prevorder(root->l);
prevorder(root->r);
}
}

void inorder(node root)
{
if(root) {
inorder(root->l);
printf("%d ", root->v);
inorder(root->r);
}
}

void postorder(node root)
{
if(root) {
postorder(root->l);
postorder(root->r);
printf("%d ", root->v);
}
}

void destruct(node root)
{
if(root) {
destruct(root->l);
destruct(root->r);
free(root);
}
}

int main()
{
int a[] = { 1,2,3,4,5,6 };
node root;
root = create( a, a + 6 );
prevorder( root ); // 前序遍历
putchar( '\n' );
inorder( root ); // 中序遍历
putchar( '\n' );
postorder( root ); // 后续遍历
putchar( '\n' );
destruct( root );
return 0;
}


全部回答

void preorder (tree_point ptr)

{

if(ptr)

{

printf("%d",ptr->data);

preorder (ptr->left_child);

preorder (ptr->right_child);

}

}

上面的事前序,把printf的位置挪挪就可以变成中序和后序的了。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
什么?或许真的会选择他们,放弃我吧!
怎么样哄骗女生!
阮经天很丑吗
我想长高点我身高才160 我又不喜欢穿高跟鞋请
做什么买卖能赚钱呢,有什么门路
鹿邑县周口意尔康(鹿邑县广播电视局西)怎么去
真正爱上一个人了都有什么举动啊?
QQ炫舞紫钻2100积分,还得等几个月才会成为4
喜欢与爱有何不同?
魔兽世界BL圣骑的9人任务在哪接?具体点
克东县齐齐哈尔大姐粗粮面在什么地方啊,我要
表示清明节的诗句,有关清明的诗词和句子?
如果才可以找到自己所爱的人,忙忙人海中是否
诺基亚款的手机5230的最新价钱
如何才能将自制地flash上传到土豆网呢?
推荐资讯
8月15日是哀悼日,那QQ三国的签到怎么办啊?
06年飞度1.3自动档
我和他感情很好,他有女朋友。但我真的很喜欢
擦了白醋和甘油的混合液还能擦其他护肤品吗?
怎么睡觉才能让头发不变型?
白醋+盐+姜+牛奶使用在皮肤上可以吗?
惠普4411s-vt168笔记本声卡驱动
谁能给我推荐一些有强劲吉他SOLO的摇滚乐
电汇T/T是怎样汇款 外国客人需要T/T汇款 我需
我家的电脑是顶星主板F-N78SM/N78VM/N78VK是A
想传照片到空间,可是传不上来为什么?
实名制能保障消费者合法权益吗??
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?