二叉樹的定義: 二叉樹是一種樹形結構: 特色是與每一個節點關聯的子節點至多有兩個(可爲0,1,2) 每一個節點的子節點有關聯位置關係 定義: 二叉樹是節點的有限集合,該集合或爲空集,或由一個根元素和兩棵不相交的二叉樹組成(遞歸定義) 二叉樹的兩棵子樹分別稱爲它的左子樹和右子樹 二叉樹的5種基本形態: 空二叉樹 只有根節點 只有左子樹,右子樹爲空 只有右子樹,左子樹爲空 左右子樹都不爲空 滿的和徹底的二叉樹: 滿二叉樹:樹中每一個分支節點(非葉節點)都有兩棵非空子樹 徹底二叉樹:除最下兩層外,其他節點度數都是2,若是最下面的節點不滿,則全部空位都在右邊,左邊沒有空位,以下圖 擴充二叉樹(由已有非空二叉樹生成的一種二叉樹): 是原二叉樹的最小節點擴充,使原樹中全部節點的度數都變成2 二叉樹的性質: 性質1. 非空二叉樹第 i 層上至多有 2i 個結點(i ≥ 0) 性質2. 高度爲 k 的二叉樹至多有 2k-1 個結點(k ≥ 0) 性質3. 對任何非空二叉樹 T,若其葉結點個數爲 n0,度數爲 2 的結點 個數爲 n2,則n0 = n2 + 1 性質4. n 個結點的徹底二叉樹的高度 k = ⎡log2(n+1)⎤ 性質5. 滿二叉樹裏的葉結點比分支結點多一個 二叉樹的數據結構 基本操做 建立二叉樹 一棵二叉樹或爲空(用 None 表示),或是兩棵已有二叉樹和要存在樹根結點的一項數據,構造起的根結點表明構造出的二叉樹: BiTree(dat, left, right) 判斷樹空:is_empty(bitree) 訪問操做,訪問二叉樹的組成成分: 訪問二叉樹的根結點數據元素:data() 取得一棵二叉樹的左右子樹:right(),left() case ... esac 與其餘語言中的 switch ... case 語句相似,是一種多分枝選擇結構。 case 語句匹配一個值或一個模式,若是匹配成功,執行相匹配的命令。case語句格式以下: case工做方式如上所示。取值後面必須爲關鍵字 in,每一模式必須以右括號結束。取值能夠爲變量或常數。匹配發現取值符合某一模式後,其間全部命令開始執行直至 ;;。;; 與其餘語言中的 break 相似,意思是跳到整個 case 語句的最後。 取值將檢測匹配的每個模式。一旦模式匹配,則執行完匹配模式相應命令後再也不繼續其餘模式。若是無一匹配模式,使用星號 * 捕獲該值,再執行後面的命令
1. 樹java
2. 紅黑樹數據結構
3. 紅黑樹。。。3d
4. 紅黑樹的定義和如何實現的就不要說了,說說紅黑樹的優勢blog
5. 二叉排序樹【左邊比根節點小,後邊比根節點大】排序
6. 二叉排序樹的退化遞歸
7. 紅黑樹it
8.由於:class
9.B樹變量
10. 文件系統用B樹,不用紅黑樹或別的呢bfc
11. B+ 樹
若是是多條的話,B 樹須要作局部的中序遍歷,可能要跨層訪問。
而 B+ 樹因爲全部數據都在葉子結點,不用跨層,同時因爲有鏈表結構,只須要找到首尾,經過鏈表就能把全部數據取出來了。
回到現場
HAHAHA