如何在 对称序线索二叉树 中找某结点 在先根序列中的 后继结点?

通过对称序线索二叉树,可以方便地找到某结点在中序序列中的前后继结点。本文探讨如何在对称序线索二叉树中寻找某结点在先根序列中的后继结点。通过先根遍历对称序二叉树,可以将结点分为三类并分别处理,实现先根序列的获取。文章提供了一个具体的算法实现和输入样例。
摘要由CSDN通过智能技术生成

       我们知道,对称线索二叉树的意义在于,中序遍历这种二叉树时不需要栈结构,也不需要递归实现,而且可以确定某结点在中序序列中的前驱和后继结点。那么现在,如在利用对称序线索二叉树,找到某结点在先根序列中的后继结点呢?

       要找到先根序列中的后继结点,可以先直接先根周游已经构造好的对称序二叉树,得到这颗二叉树的先根序列,再搜索后继结点即可。那么,如何先根周游对称序二叉树?

       不妨以下面一颗对称序二叉树为例,


除了头结点外,根据对称序线索二叉树的特点,可以把二叉树的各个结点分为三类,左子树不是线索的、左子树是线索而右子树不是线索的、左右子树都是线索的(结点是线索说明该结点不存储信息)。因此,我们可以依照这三种类别对二叉树进行先根遍历:

 从二叉树的根结点开始,

1)当左子树不是线索时,顺着左子树一直向下,同时访问遍历到的结点

2)当左子树是线索而右子树不是线索时,访问右子树结点

3)当左、右子树都是线索时,借用线索,跨越父节点,直接访问父节点的右子树,直到右子树为空,先根遍历结束

算法实现如下,

void ThreadPreOrder(pThrTree t)                     //按先序遍历周游中序线索二叉树
{
    pThrTree p =t;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值