C语言二叉树的遍历问题,照着他人的代码练习的,实在是自己找不出错误的地方了,明白的还望帮忙看下 谢谢

[复制链接]
查看11 | 回复2 | 2013-6-2 07:04:01 | 显示全部楼层 |阅读模式
首先你的BinTreeCreat函数,你使用BitNode *BT=(BitNode *)malloc(sizeof(BitNode));C语言遵守局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量的原则,也就是说if语句后面的执行语句,也就是{}就是一个快,你在块中定义了BT,这样你的函数修改的是这个BT,而不是我们传入的BT,在主函数中定义的BT!!也就是说你这样做导致你的BinTreeCreat函数从头到尾都没有修改主函数的BT,相当于你压根没创建二叉树……另外就是你的InOrderBinTraverse2函数,你仔细看,在while(p->lchild!=NULL)之前,p有被赋值么??没有!它是指向垃圾内存的!先不说这里的错,你定义指...
回复

使用道具 举报

千问 | 2013-6-2 07:04:01 | 显示全部楼层
每个dfs下面配了一个手动栈,手动栈这个东西不是你在考场上写的出来的,,还是写精巧的递归比较好...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行