線索化二叉樹的中序遍歷

2021-10-04 08:50:35 字數 2801 閱讀 7292

**實現:

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結點來理解...