小蚂蚁学习数据结构(20)——线索二叉树的概述

线索二叉树

    遍历二叉树,实质上是对一个非线性结构进行线性化操作,使得每个节点在这些线性序列中有且仅有一个直接前驱和直接后驱。

    线索:指向前驱或后继节点的指针被称为线索。

    线索二叉树:加上线索的二叉链表就叫做线索二叉树。

实现

    有n个节点的二叉链表必定有n+1个空链域。

    推导过程是这样的:

        一个拥有n个节点的二叉树,必定有2n个指针域,也一定有n-1个分支,那么 2n - (n - 1) 就是空指针域的数量,即:n + 1

    在线索二叉树的节点中增加两个标志域

        LTag = 0 时    lchild域指示节点的左孩子

                 = 1 时    lchild域指示节点的前驱

        RTag = 0 时    rchild域指示节点的右孩子

                  = 1 时    rchild域指示节点的后继

线索二叉树遍历方法:

    在线索树上进行遍历,只要先找到序列中的第一个节点,然后依次找节点后继直至其后继为空为止。      

    当一个二叉树有了线索之后,就不需要栈信息。对于非叶子节点,也就是分支节点来说,前驱就是其左子树最后访问到的数据,后继是右子树最先访问到的一个元素。(中序线索链表)

线索二叉树优点:

    在中序线索二叉树上遍历二叉树,虽然时间复杂度同样也是O(n),但常数因子要小一些,而且不需要设栈。因此,若在某程序中所用二叉树需要经常遍历或查找节点在遍历说的先行序列中的前驱和后驱,则应采用线索链表做存储结构。


 学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog



转载于:https://my.oschina.net/woshixiaomayi/blog/607014

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值