樹狀圖是一種資料結構,它是由n(n>=1)個有限結點組成乙個具有層次關係的集合。把它叫做"樹"是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。
家族樹示例:王二麻子的孩子和孫子們
家族樹示例:王小草的父母和祖父母
示例:大學組織結構圖
前面的每個圖都是樹的示例。樹(tree)是一組由邊(edge)相連的節點(node),邊表示節點間的關係。節點按層(level)組織,層表示節點的層次。最上層的單節點稱為根(root)。
樹中每個後繼層中的節點是前一層中節點的孩子(children)。有孩子的節點稱為其孩子的父節點(parent)。如下圖所示,節點a是節點b、c、d和e的父節點。因為這些孩子有相同的父節點,所以它們稱為兄弟(sibling)。它們也稱為節點a的後代(descendant),而節點a是它們的祖先(ancestor)。節點p是節點a的後代,而a是p的祖先。注意,節點p沒有孩子。這樣的節點稱為葉子(leaf)。
不是葉節點的節點--即有孩子的節點--稱為內部節點(interior)或非葉節點(nonleaf)。這樣的節點也是父節點。
· 根節點或樹根(root)
樹定點的節點稱之為根節點,也叫樹根
· 節點(node)
樹種的每個元素都稱為節點
· 子樹(subtree)
除根節點外,其他節點也可以分為多個樹的集合,叫做子樹,上圖中f節點和n、o、p節點共同構成一顆子樹,節點b的子樹。
· 節點的度
乙個節點之間含有的子樹的個數,稱之為節點的度。上圖中d節點的度為3,e節點的度為2,q、r、s節點的度為0
· 葉子節點、葉節點、終端節點
度為0的節點叫做葉子節點,也叫葉節點、終端節點。其實就是沒有字節點的節點,或者說沒有子樹的節點。
· 父節點、雙親節點
· 兄弟節點
· 樹的度
一棵樹中最大節點的度稱之為樹的度,即樹種哪個節點的子節點最多,那麼這個節點的度也就是樹的度。
· 節點的層次
從根這一層開始,根算1層,根的子節點算2層,一直到最下面一層
· 樹的高度、深度
樹的深度是從根節點開始、自頂向下逐層累加(根節點的高度是1)助記:深度從上到下
樹的高度是從葉節點開始、自底向上逐層累加(葉節點的高度是1)助記:高度由下向上
雖然樹的高度和深度一樣,但是具體到某個節點上,其高度和深度通常是不一樣的。
· 堂兄弟節點
· 節點的祖先
· 節點的子孫
· 森林
由m棵不相交的樹組成的集合,叫做森林
二叉樹二叉樹中的每個節點最多有兩個孩子。它們稱為左孩子(left child)和右孩子(right child)
如圖 a 所示:節點b、d、f都是左孩子,二節點c、e、g都是右孩子。該二叉樹的根有兩顆子樹。左子樹(left subtree)的根是b,而右子樹(right subtree)的根是c。
二叉樹中的每顆子樹還是二叉樹。
滿二叉樹和完全二叉樹
滿二叉樹:高度為h的二叉樹中,若其所有的也節點都在h層上且每個非葉節點都有兩個孩子,則樹稱為滿的。如圖a) 既為一顆滿二叉樹。
完全二叉樹:如果二叉樹**最後一層外的所有層都含有最多的節點,最後一層的節點從左至右填充,則樹是完全的。如圖b)即為一顆完全二叉樹
注:滿二叉樹中的所有葉節點都在同一層中,且每個非葉節點都有兩個孩子。完全二叉樹中,到倒數第二層都是滿的,且最後一層的葉節點從左至右填充。
平衡二叉樹
若二叉樹中每個節點有兩顆高度完全相等的子樹,則樹稱為完全平衡樹(completely balanced)。
如圖a所示的滿樹是完全平衡樹。如果樹中的每個節點的子樹的高度差不大於1,則樹稱為高度平衡的,或簡稱為平衡的。
滿樹或完全樹的高度。
樹基礎知識
陣列儲存方式的分析 優點 通過下標方式訪問元素,速度快。對於有序陣列,還可使用二分查詢提高檢索速度。缺點 如果要檢索具體某個值,或者插入值 按一定順序 會整體移動,效率較低 示意圖 畫出操作示意圖 2.鏈式儲存方式的分析 優點 在一定程度上對陣列儲存方式有優化 比如 插入乙個數值節點,只需要將插入節...
樹的基礎知識
樹 樹定義專業定義 1 有且只有乙個稱為根的節點 2 有若干個互不相交的子樹,這些子樹本身也是一棵樹 通俗定義 1 樹是由節點和邊組成 2 每個節點只有乙個父節點但可以有多個子節點 3 但有乙個節點例外,該節點沒有根節點,此節點稱為根節點 專業術語 節點父節點子節點 子孫堂兄弟 深度 從根節點到最底...
樹的基礎知識
二叉樹的儲存 連續儲存 完全二叉樹 優點 查詢某個節點的父節點和子節點 也包括沒有資料的節點 缺點 耗用記憶體空間過大 鏈式儲存一般樹的儲存 雙親表示法 求父節點方便 孩子表示法 求子節點方便 雙親孩子表示法 求父節點子節點都方便 二叉樹表示法 把乙個普通樹轉換成二叉樹來儲存具體的轉換方法 設法保證...