数据结构——线索二叉树

                           线索二叉树 

线索二叉树的概念

       一棵二叉树,最下面一层全是叶子节点,这些叶子节点的左右孩子指针全为NULL,其实是浪费了这些内存。详细计算一下,节点二数为n的二叉树有n+1个空指针。这是怎么算来的呢?其实有个非常简单的算法:有n个节点的二叉树很明显有2n个指针,而这n个节点除了主根节点,其他节点都有一条连线指向这个节点的父节点,反过来来看,这个连线就是父节点指向这个节点的指针,因而这种连线有n-1条,也就是说二叉树中的非空指针有n-1个,那么空指针就有n+1个了。
       这n+1个空指针,占了总指针的一半,其实是比较浪费内存的,所以最好拿这些指针来存点有意义的东西,比如说可以用来存某种遍历方式的结果,如果一个节点的左子树指针为空,就用这个指针来指向在这种遍历方式下这个节点的前一个节点,如果这个节点的右子树指针为空,就用这个指针来指向在这种遍历方式下这个节点的下一个节点。这样,就充分利用起了这些空指针。这样形成的二叉树又叫线索二叉树,这些空指针被利用起来指向前个节点或后一个节点,叫作线索。由于二叉树常见的遍历方式有先序遍历、中序遍历和后序遍历,因此,线索二叉树也有先序二叉树、中序二叉树以及后序二叉树。


构造线索二叉树的算法

      既然线索二叉树储存的是一种遍历的结果,那么构造线索二叉树的过程也就是遍历了,这个过程又叫线索化。
      比如说中序遍历,首先访问左子树,如果左子树为空
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值