遍歷序列
三種遞歸遍歷算法的搜索路線相同(如下圖虛線所示)
具體線路為
從根結點出發
(
中序遍歷二叉樹時
【例】中序遍歷上圖所示的二叉樹時
D B A E C F
(
先序遍歷二叉樹時
【例】先序遍歷上圖所示的二叉樹時
A B D C E F
(
後序遍歷二叉樹時
【例】後序遍歷上圖所示的二叉樹時
D B E F C A
注意
(
點時進行的
二叉樹的前序序列
(
點
其遍歷次序名稱
【例】上圖所示的二叉樹中結點C
F
二叉鏈表的構造
基於先序遍歷的構造
注意
先序序列中必須加入虛結點以示空指針的位置
【例】
建立上圖所示二叉樹
假設虛結點輸入時以空格字符表示
void CreateBinTree (BinTree *T)
{ //構造二叉鏈表
char ch;
if((ch=getchar())==
else{ //讀人非空格
*T=(BinTNode *)malloc(sizeof(BinTNode)); //生成結點
(*T)
CreateBinTree(&(*T)
CreateBinTree(&(*T)
}
}
注意
調用該算法時
【例】
設root是一根指針(即它的類型是BinTree)
構造二叉鏈表的其他方法【參見參考書目】
二叉樹建立過程見【 動畫演示 】
二叉樹的應用
【參見練習】
From:http://tw.wingwit.com/Article/program/sjjg/201311/23882.html