对线索二叉树的理解(二)

之前是对线索二叉树概念的理解了,从整体上了解了它以后就可以安心去研究他的算法实现和方法实现了。

(1)首先对于链式访问的两个节点a和b,如果我们先访问a再访问b,那我们可以得到2个信息:①b的前驱是a;②a的后继是b。

实际二叉树也是这样进行线索化的(pre就是a,BT就是b):

  1.         if (!BT->Left)      //如果该结点没有左孩子,利用左指针域指示这个节点的前驱,即①  
  2.         {  
  3.             BT->Ltag = Thread;  
  4.             BT->Left = pre;  
  5.         }  
  6.         if (!pre->Right)   //如果先前访问的结点没有右孩子,利用它的右指针域指示它的后继 ,即② 
  7.         {  
  8.             pre->Rtag = Thread;  
  9.             pre->Right = BT;  
  10.         }                        //其他情况咱们不管,线索二叉树只处理这2种情况。能建立起线索就行了,要什么自行车!

按相同的思想访问接下来的c、d、、、等等节点就可以把线索建立起来。即   pre = BT;  

(2)当然a、b、c、d的访问就是按照二叉树中序遍历的思想和方法即可。

  1.      InThreding(BT->Left);//递归左孩子线索化 
  2.      TreadingFxn();         //线索化
  3.        InThreding(BT->Right);//递归右孩子线索化  

这样线索化的方法基本就理解了,其实真的很简单,我这老人脑袋想了这么久才明白。。。。。。

线索化完了以后,二叉树就有了链式的属性,我们可以找到“头节点”“尾节点”,可以实现“查找某节点的前驱”,可以实现“查找某节点的后继”,可以实现“查找某节点的在二叉树中的父节点”,可以实现“查找某节点”等等方法,接下来继续分享。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值