線索二叉樹的運算
(
在中序線索二叉樹中
① 若*p的右子樹空(即p
② 若*p的右子樹非空(即p
開始
點
【例】上圖的中序線索二叉樹中
A的中序後繼是F
F的中序後繼是H
B的中序後繼是D
在中序線索二叉樹中求中序後繼結點的過程可
BinThrNode *InorderSuccessor(BinThrNode *p)
{//在中序線索樹中找結點*p的中序後繼
BinThrNode *q;
if (p
Return p
else{
q=p
while (q
q=q
return q; //當q的左子樹為空時
} //end if
}
該算法的時間復雜度不超過樹的高度h
(
中序是一種對稱序
① 若*p的左子樹為空
【例】上圖所示的中序線索二叉樹中
② 若*p的左子樹非空
子樹中
【例】上圖所示中序線索二叉樹中
在中序線索二叉樹中求中序前趨結點的過程可
BinThrNode *Inorderpre(BinThrNode *p)
{//在中序線索樹中找結點*p的中序前趨
BinThrNode *q;
if (p
return p
else{
q=p
while (q
q=q
return q; //當q的右子樹為空時
} //end if
}
由上述討論可知
*p的中序前趨(或中序後繼)
From:http://tw.wingwit.com/Article/program/sjjg/201311/23876.html