网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月12日
漏签
0
天
c语言吧
关注:
791,715
贴子:
4,307,108
看贴
图片
吧主推荐
视频
游戏
3
回复贴,共
1
页
<<返回c语言吧
>0< 加载中...
求助
线索二叉树问题
只看楼主
收藏
回复
宇宙97
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
如右边我画的那个二叉树,BiThTree pre 没有被初始化。当InThreading函数一直递归到中序遍历第一个结点H时。因为H没有左孩子,所以执行if(!p->lchild)里面的语句。请问一下p->lchild=pre是什么意思?pre在哪里被赋值了
GTA小鸡
吧主
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
pre=p
贴吧用户_zero
强能力者
7
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
int main(){
pre = null; // 下面函数用了全局变量,所以调用之前要设置初始值,为空
InThreading(p);
}
然后中序遍历是一个线性访问过程,每次返回一个结点
InThread(p->left); // 左访问
visit(p); // 访问p
pre = p; // 把p记录下来
InThread(p->right); // 右访问
就是把一个A{B,C}的树按BAC顺序访问,当访问到A的时候pre就是前面的B,而访问到C的时候pre就是A
而线索化是利用树的叶子结点来构建一个链表,目的是加快遍历访问的速度,它的算法举例就是B和C两个叶子结点,把B的right指向A,把C的left指向A,这样从左往右B->left => A,A->right->mostLeft => C就构成一个链表。。。
simulacrumbd
毛蛋
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
第一行就大大地写着《全局变量》
每次访问完后把当前结点保存在pre里面
因为是中序遍历,访问完H,访问D的时候,pre里面记录的就是上一次访问的H
当访问完 I,访问B的时候,pre里面记录的就是上一次访问的 I
就方便让两个看起来很远毫无关系,但实际却是前驱后继的结点相互联系起来
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示