线索二叉树

1、线索二叉树的概念


         

  如果我们需要得到上面二叉树的排序结果时,能够直接得到,而不是每次都去重新排序二叉树的话,效率就会大大得到提高了。线索二叉树就是基于这个理念,将本二叉树的排序事先存储起来,当需要时直接获取结果即可。


2、线索二叉树的实现方法


  (1)新开辟空间来存储二叉树序列;

  (2)利用二叉树中未被利用的空间资源;


  第二种方式较为复杂,这里讲解第二种方式。首先来看一下普通二叉树的节点存储结构:


         

 

  二叉树中每个节点形式如上图,左右两个指针用于存储左子节点和右子节点的地址,但是我们发现叶子节点的左右指针都是为空的,这就造成了空间浪费,我们就用这些空指针来存储节点的前后关系。

  线索二叉树中叶子节点的左指针用于存储前驱结点,右指针用于存储后继节点;这样的左右指针叫做线索。但是这样就造成了普通指针和线索指针不好区分,就又引入了两个指针Lbit和Rbit用于标志是否为线索,它们只占一个字节,所以不会造成过多开销。


         


  这些标志代表的含义分别为:


               


3、构造线索二叉树


  怎样将普通二叉树转换为线索二叉树呢?

  首先按照题目要求,写出此二叉树的前序,中序,或者后序遍历。根据此遍历,将节点的左右空指针分别指向相应的前驱结点和后继节点即可。例如:


        


  同理可得出其中序线索二叉树和后序线索二叉树为:


          


  将每个节点的左线索指向前驱结点,右线索指向后继节点。




  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值