**實現:
package tree.threadedbinarytree;
public
class
threadedbinarytree
; hreonode root =
newhreonode(1
,"宋江");
hreonode node2 =
newhreonode(3
,"吳用");
hreonode node3 =
newhreonode(6
,"林沖");
hreonode node4 =
newhreonode(8
,"呼延灼");
hreonode node5 =
newhreonode(10
,"柴進");
hreonode node6 =
newhreonode(14
,"武松");
root.
setleft
(node2)
; root.
setright
(node3)
; node2.
setleft
(node4)
; node2.
setright
(node5)
; node3.
setleft
(node6)
; threadedbinarytreeclass t =
newthreadedbinarytreeclass()
; t.
setroot
(root)
; t.
threadednode()
; t.
threadedmidorder()
;//測試
/* hreonode left = node5.getleft();
hreonode right = node5.getright();
system.out.println(left);
system.out.println(right);*/}}
//線索化二叉樹類
class
threadedbinarytreeclass
//遍歷線索化二叉樹中序方法
public
void
threadedmidorder()
//找到了底層左子節點
system.out.
println
(node)
;//如果當前節點的右指標是後繼節點(right==1) 一直輸出
while
(node.
getrighttype()
==1)//該節點遍歷完成
node = node.
getright()
;}}//二叉樹中序線索化
//node為當前需要線索化的節點
public
void
threadednode
(hreonode hreonodeclass)
//處理後繼節點 想想左下角的葉子結點 pre節點相當於在這個葉子結點前面的空節點,該pre節點的前驅為null,後繼為這個葉子結點
if(prenode != null && prenode.
getright()
== null)
//前驅節點隨著遞迴而變化 pre後移
prenode = hreonodeclass;
//線索化右子樹
threadednode
(hreonodeclass.
getright()
);}//
public hreonode getroot()
public
void
setroot
(hreonode root)
}class
hreonode
public
intgetno()
public
void
setno
(int no)
public string getname()
public
void
setname
(string name)
public hreonode getleft()
public
void
setleft
(hreonode left)
public hreonode getright()
public
void
setright
(hreonode right)
public
intgetlefttype()
public
void
setlefttype
(int lefttype)
public
intgetrighttype()
public
void
setrighttype
(int righttype)
public hreonode getparent()
public
void
setparent
(hreonode parent)
@override
public string tostring()
';}}
二叉樹的線索化 線索二叉樹的遍歷(中序)
二叉樹的線索化 對於n個節點的二叉樹,在二叉儲存鍊錶中有n 1個空鏈域,利用這些空鏈域存放某種遍歷次序下的指向該節點的前驅和後繼的指標,這些指標成為線索,被線索的二叉樹成為線索二叉樹。這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹 threaded binarytree 根據線索性...
中序線索化二叉樹
線索化二叉樹。1 中序線索化二叉樹 2 遍歷線索化二叉樹。include include define maxsize 100 typedef char elemtype using namespace std typedef struct node tbtnode 對以 p為根節點的二叉樹中序線索...
二叉樹中序線索化
處理當前結點的前驅結點 處理後序結點 param node 當前需要線索化的結點 public void threadednodes heronode node 1.先線索化左子樹 threadednodes node.getleft 2.線索化當前結點 難點 處理當前結點的前驅結點 以8結點來理解...