中序線索化二叉樹的實現

2021-10-09 11:09:56 字數 2160 閱讀 6016

在這裡只做中序線索化二叉樹:

package com.ran;

public

class

hello

}//線索化二叉樹

class

erchashuxiansuo

//過載一下

public

void

xiansuohua()

//編寫線索化的方法 node就是當前需要線索化的節點

public

void

xiansuohua

(heronode node)

//1.先線索化我們的左子樹

xiansuohua

(node.

getzuo()

);//2.線索化當前節點

//處理當前節點的前驅結點

//以8節點來理解

//8節點的left=null

if(node.

getzuo()

==null)

//處理後繼節點 處理後繼節點的時候是在下一次遍歷到3的時候處理的 在8的時候並沒有處理

if(pre!=null && pre.

getyou()

==null)

//!!! 每處理乙個節點後,讓當前節點是下乙個節點的前驅結點

pre=node;

//3.線索化右子樹

xiansuohua

(node.

getyou()

);}//前序遍歷

public

void

qianxu()

else

}public

void

zhongxu()

else

}public

void

houxu()

else}}

class

heronode

public

void

setzuotype

(int zuotype)

public

intgetyoutype()

public

void

setyoutype

(int youtype)

public

heronode

(int no, string name)

public

intgetno()

public

void

setno

(int no)

public string getname()

public

void

setname

(string name)

public heronode getzuo()

public

void

setzuo

(heronode zuo)

public heronode getyou()

public

void

setyou

(heronode you)

@override

public string tostring()

';}public

void

qianxu()

//遞迴向右子樹前序遍歷if(

this

.you!=null)

}public

void

zhongxu()

//輸出父節點

system.out.

println

(this);

//遞迴向右子樹中序遍歷if(

this

.you!=null)

}public

void

houxu()

if(this

.you!=null)

system.out.

println

(this);

}}

**實現效果如下:

中序線索化二叉樹

線索化二叉樹。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結點來理解...

中序線索化二叉樹

中序線索化二叉樹 1 void tree intree node root,node pre 5 intree root lchild,pre 到達當前結點的左子樹的底部左結點 6if root lchild null 注意下列的條件判斷,要先判斷pre是不是空,再是 pre的其他指標域!10if ...