標籤:儲存 標記法 es2017 廣度優先遍曆 中序 個數 ima 滿二叉樹 二叉鏈表
樹代表一種非線性的資料結構。
術語:
葉子節點:沒有子節點的節點,因此葉子節點不可作為父節點;
節點的度:節點擁有的子樹的個數被稱為該節點的度(degree);
樹的度:樹中所有節點的度的最大值就是該樹的度;
節點層次:節點的層次從根開始算起,根的層次值為1,其餘節點的層次值為父節點層次值加1;
樹的深度(depth):樹中節點的最大層次值稱為樹的深度或高度;
有序樹與無序樹:如果將樹中節點的各個子樹看成從左至右是有序的(即不能互換),則稱該樹為有序樹,否則稱為無序樹。
父親點標記法:每個子節點都記錄它的父節點;(這種方式是從子節點著手)
孩子鏈標記法:每個非葉子節點通過一個鏈表來記錄它所有的子節點。(這種方式是從父節點著手,特點:每個節點都可以快速找到它的所有子節點)如:
二叉樹:每個節點最多隻有兩個子樹的有序樹。
滿二叉樹:如果一棵二叉樹的深度為k,則其包含2k-1個節點。滿二叉樹如:
完全二叉樹:一棵有n個節點的二叉樹,按滿二叉樹的編號方式對他進行編號,若樹中所有節點和滿二叉樹1-n編號完全一致,則稱該樹為完全二叉樹。也就是說除最後一層外,其餘層的所有節點都是滿的。如:
二叉樹性質:
1)在任何一棵二叉樹中,如果其葉子節點的數量為N0,度為2的子節點數量為N1,則N0=N1+1;
2)具有N個節點的完全二叉樹的深度為log2N+1;
二叉樹的二叉鏈表格儲存體的思想:讓每個節點都能記住它的左、右兩個節點。為每個節點增加left、right兩個指標,分別引用該節點的左、右兩個子節點。
二叉樹的三叉鏈表格儲存體的思想:讓每個節點不僅記住它的左右節點,還能記住它的父節點,利用指標parent。
遍曆二叉樹
I、先序遍曆:
1)訪問根節點;
2)遞迴遍曆左子樹;
3)遞迴遍曆右子樹;
II、中序遍曆:
1)遞迴遍曆左子樹;
2)訪問根節點;
3)遞迴遍曆右子樹;
III、後序遍曆:
1)遞迴遍曆右子樹;
2)訪問根節點;
3)遞迴遍曆左子樹;
廣度優先遍曆:按層遍曆;
瘋狂Java——樹和二叉樹(第11章)