二叉树线索化的思想是什么?

论坛 期权论坛 期权     
hitmath2010   2018-4-26 13:53   7979   2
分享到 :
0 人收藏

2 个回复

倒序浏览
2#
L_Hier  2级吧友 | 2018-4-30 01:59:18 发帖IP地址来自
线索二叉树就是
使用的对象:树节点中没有使用的n-1个空指针(n个树节点,空指针永远都是n+1个,自己推下)。
运行的原则:某种深度遍历顺序——先序,中序,后序
过程:按照中序(当然也可以是其他的遍历)的前驱后继关系,若p的左子树为空,则左子树指向p的中序前驱,若p的右子树为空,则p的右子树节点指向p的后继,若是子树都有,就不用捣腾了。第一个节点的左子树为空(此节点一定是叶节点,而且没前驱,所以是空),最后一个节点的右子树也是空。
数据结构:在树节点的结构是(data,*lchild,*rchild)线索树的节点是(data,*lchild,*rchild,ltag,rtag),tag为1表示线索数的节点,为0标识树节点。
目的:方便找到树在某种遍历的条件下前驱和后继。不是用来遍历的哈
注意的点:只用中序线索树可以很完美的达到这个效果,前序线索树在计算前驱的时候会牵扯到自己的父节点,就要使用栈来找,这样和遍历查找没区别,同理,后序线索树找后继会比较麻烦。

话说,要点基本就这样了。
细节的点,比如说为什么n+1啊,为什么前序后序不完美啊,这些一边就考个知道,而且推理是很快的,所以呢,考试的话,就照着我说的这几个点就ok了,主要是要会画,还有就是中序查找的实现。
中序实现给你一个要点:
找前驱:向左找第一个rtag为1的就是它的前驱了。
因为在中序中,所有的内节点(非叶节点)的前驱和后继必然是一个叶节点。
要是记不住算法,记住这点临场写也够了,前提是老兄您在之前弄明白我的要点的意义。
3#
t889900  3级会员 | 2018-4-30 01:59:19 发帖IP地址来自
做任务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP