中易网

我用C++编写的二叉树的建立与遍历,为什么没有建立成功啊,输出还是构造函数中的数据,程序如下:

答案:2  悬赏:50  
解决时间 2021-03-17 14:24
#include

using namespace std;

class Bintree
{
public:
Bintree(){data='0';lchild=NULL;rchild=NULL;}
char data;
Bintree *lchild;
Bintree *rchild;
};
void CreateBintree(Bintree* tree)
{
char ch;
cin>>ch;
if(ch=='0')
tree=NULL;
else
{
tree=new Bintree;
tree->data = ch;
CreateBintree(tree->lchild);
CreateBintree(tree->rchild);
}
}

void PreOrderTraverse(Bintree *t)
{
if(t!=NULL)
{
cout<< t->data;
PreOrderTraverse(t->lchild);
PreOrderTraverse(t->rchild);
}
}
int main()
{
Bintree *t=NULL;
CreateBintree(t);
PreOrderTraverse(t);
return 0;
}

自己改了一下,呵呵,现在可以了,还是请高手帮我分析一下上面的为什么不行?
#include
using namespace std;
class Bintree
{
public:
Bintree(){data='0';lchild=NULL;rchild=NULL;}
char data;
Bintree *lchild;
Bintree *rchild;
};
Bintree* CreateBintree(Bintree* tree)
{
char ch;
cin>>ch;
if(ch=='0')
tree=NULL;
else
{
tree=new Bintree;
tree->data = ch;
tree->lchild = CreateBintree(tree->lchild);
tree->rchild = CreateBintree(tree->rchild);
}
return tree;
}

void PreOrderTraverse(Bintree *t)
{
if(t)
{
cout<< t->data;
PreOrderTraverse(t->lchild);
PreOrderTraverse(t->rchild);
}
}
int main()
{
Bintree *Tree=NULL;
Tree = CreateBintree(Tree);
PreOrderTraverse(Tree);
return 0;
}
最佳答案
void CreateBintree(Bintree* tree)
因为这个函数传入的是一级指针,所以,在函数里面使用的是一个该指针的拷贝,在里面申请内存是不影响外面的,可以这样修改:
void CreateBintree(Bintree** tree) 二级指针
void CreateBintree(Bintree* &tree)指针的引用
全部回答
typedef struct node{ int data; char ch; }bitnode; '建立一个队列 '后序遍历的函数,把每次遍历到的结点数或符号放入队列中 '把队列的内容依次输出 计算
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
中央空调一拖三打开之后是同是出风还是可以控
边艾村地址有知道的么?有点事想过去
上海中山北路长途汽车站1号地铁线到松江九亭
有什么方法能使煮熟的板栗好剥皮?
蜗居里,小贝和新女友在一起被海藻看到的那集
我国人口分布的一条重要地理分界线“胡焕庸线
奥迪A6A8车尾写着30tfsi或者是45tfsi是什么意
天龙八部2天山65级带什么BB好(请高手们说详
青岛市城阳区宝龙城市广场有推油的地方吗
cad练习题及绘制方法
课后帮怎么参加安全知识竞赛 课后帮参加安全
长沙水上乐园具体位置是
蓝田玉翡翠我想知道这个在什么地方
黑松露炖排骨山药
合肥点凡设计装饰怎么样?
推荐资讯
金马三轮经销处在哪里啊,我有事要去这个地方
南坪中学旁边的花市搬到哪里去了?
360云盘里来自iphone里面的图片删掉了,怎麼样
喀喇沁旗锦山镇穷吗
女友问我是不是她的骑士?但骑士对于她是什么
战舰世界6.1什么时候更新
WWE巴蒂斯塔和NBA的大鲨鱼奥尼尔打架谁会赢?
瑜伽球直径怎么丈量
阿里巴巴的代理加盟有什么用呢
农民伯伯( )的劳动着,留下了辛勤的汗水、
6万左右买什么牌子箱式轻卡好些
1`在括号里填上最接近的整万数。( )<436890<(
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?