二叉樹的線索化
將二叉樹變為線索二叉樹的過程稱為 線索化
按某種次序將二叉樹線索化的實質是
具體過程可
(
算法與中序遍歷算法類似
該算法應附設一個指針pre始終指向剛剛訪問過的結點(pre的初值應為NULL)
結點*p的前趨
(
typedef enum { Link
typedef struct node{
DataType data;
PointerTag ltag
Struct node *lchild
} BinThrNode;\\線索二叉樹的結點類型
typedef BinThrNode *BinThrTree;
BinThrNode *pre=NULL; //全局量
void lnorderThreading(BinThrTree p)
{//將二叉樹p中序線索化
if(p){ //p非空時
InorderThreading(p
//以下直至右子樹線索化之前相當於遍歷算法中訪問結點的操作
p
//(即
p
*(pre){ //若*p的前趨*pre存在
if(pre
pre
if(p
p
} // 完成處理*pre的線索
pre=p; //令pre是下一訪問結點的中序前趨
InorderThreeding(p
}//endif
} //InorderThreading
(
和中序遍歷算法一樣
前序線索化和後序線索化算法與二叉樹的中序線索化類似
From:http://tw.wingwit.com/Article/program/sjjg/201311/23879.html