在這裡只做中序線索化二叉樹:
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 ...