【正文】
G H K A B C D E F G H K 課堂練習 A B D C E F A B C 寫出先序遍歷的結(jié)果 void Preorder (BiTree T,void( *visit)(TElemTypeamp。 二叉樹的遍歷: 二叉樹是非線性結(jié)構(gòu),每個結(jié)點有兩個后繼,則存在如何遍歷即按什么樣的搜索路徑進行遍歷的問題。 作用: 遍歷的目的是 線性化 ,使二叉樹中的結(jié)點能夠按照某種次序排列在一個線性隊列上,便于處理。 三叉鏈表的 C 語言類型描述如下 : parent lchild data rchild 結(jié)點結(jié)構(gòu) : // 結(jié)點結(jié)構(gòu) // 左右孩子指針 //雙親指針 鏈式存儲 — 三叉鏈表 問題的提出 在實際應(yīng)用中,經(jīng)常需要在二叉樹中查找具有某些特征的結(jié)點,或者對樹中的全部結(jié)點逐一進行某種處理,這就提出了二叉樹的遍歷的問題 。 struct TriTNode *parent。 lchild data rchild 結(jié)點結(jié)構(gòu) : 二叉鏈表的 C 語言類型描述如下 : 左指針域 數(shù)據(jù)域 右指針域 鏈式存儲 — 二叉鏈表 parent lchild data rchild 三叉鏈表的結(jié)點結(jié)構(gòu) : 指向雙親結(jié)點的指針域 左指針域 數(shù)據(jù)域 右指針域 鏈式存儲 — 三叉鏈表 root A E F ∧ ∧ ∧ D ∧ ∧ C ∧ B ∧ ∧ 二叉樹的三叉鏈表表示: 鏈式存儲 — 三叉鏈表 typedef struct TriTNode { TElemType data。 struct BiTNode *lchild, *rchild。 } SqBiTree。 二叉樹的順序存儲 define MAX_TREE_SIZE 100 // 二叉樹的最大結(jié)點數(shù) typedef struct{ TElemType data[MAX_TREE_SIZE]。二叉樹的存儲結(jié)構(gòu)和遍歷 二叉樹的遍歷 二叉樹的存儲結(jié)構(gòu) 小結(jié)和作業(yè) 順序存儲 二叉鏈表 三叉鏈表 鏈式存儲 問題的提出 遞歸遍歷算法 遍歷的應(yīng)用實例 二叉樹的順序存儲 順序存儲是用一組連續(xù)的存儲單元存放數(shù)據(jù) 順序存儲要求數(shù)據(jù)是線性結(jié)構(gòu) 二叉樹是非線性結(jié)構(gòu) 如何把二叉樹轉(zhuǎn)換為線性結(jié)構(gòu),而且保持結(jié)點之間的父 /子關(guān)系 ? 二叉樹的順序存儲 A C G B D E F K L H J I M N O 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 滿二叉樹:從上到下,從左往右依次編號 二叉樹的順序存儲 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 數(shù)組的下標,也是結(jié)點的編號 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C E F D G H I J K L M N O 二叉樹的順序存儲 A C G B D E F H J I 1 2 3 4 5 6 7 8 9 10 完全二叉樹:從上到下,從左往右依次編號 0 1 2 3 4 5