概念數據結構
樹:是一種數據結構,它是由n(n>=1)個有限節點組成一個具備層次關係的集合。spa
二叉樹:是一種特殊的樹。blog
結點的度:結點擁有的子樹個數擴展
葉結點(葉):度爲0的結點,即沒有兒子的結點二叉樹
分支結點:度不爲0的結點搜索
兄弟結點:具備相同父親的結點遍歷
樹的度:樹中最大的結點度im
結點的層次:根爲第一層,依次類推d3
深度:樹中節點的最大層次數據
高度:從下往上數層數
若是根結點第0,層數=深度=高度-1
若是根結點第1,層數=深度=高度
特色
一、每一個結點最多有兩顆子樹,結點的度最大爲2。
二、左子樹和右子樹是有順序的,次序不能顛倒。
三、即便某結點只有一個子樹,也要區分左右子樹。
類型
滿二叉樹:顧名思義,佈滿結點的樹,從高到低,除了葉節點外,每個結點都有左右子葉,且葉子結點都處在最底層的二叉樹。
徹底二叉樹:比滿二叉樹少幾個葉節點,除最底層外,其它各層結點數都達到最大個數,底層的葉子結點都是從左到右依次排布。
平衡二叉樹(AVL樹):空樹或者它的左右兩個子樹的高度差的絕對值不超過1,而且左右兩個子樹也都是平衡樹。
二叉搜索樹:空樹或者二叉樹的全部節點比他的左子節點大,比他的右子節點小。(左<=根<=右)
紅黑樹:不只是具備二叉搜索樹的屬性,還具備平衡樹的屬性,有序且子樹差不超過1,顏色規則:結點要麼紅要麼黑,上下層結點紅黑交替,根節點和特殊節點(即葉節點下面兩個虛無的節點)是黑的,紅節點的左右子節點是黑的,最重要的是從任一節點到其每一個葉子節點的全部路徑都包含相同數目的黑色節點。
遍歷方式
深度遍歷:前中後序三種
前序遍歷:根結點->左子樹->右子樹
中序遍歷:左子樹->根結點->右子樹
後序遍歷:左子樹->根結點->根節點
廣度遍歷:
層次遍歷:按層,從上到下,從左到右遍歷。
擴展
紅黑樹插入結點問題
通常默認插入節點是紅色的。
若插入之後樹不符合顏色規則,則須要進行顏色調整。
若插入之後樹已經不是一個平衡的二叉樹,則須要進行結構調整。
結構調整過程包含兩個基本操做:左旋(Rotate Left),右旋(RotateRight)。