樹如何找共同祖先 樹的基礎知識

2021-10-13 20:00:38 字數 2601 閱讀 2824

樹狀圖是一種資料結構,它是由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 但有乙個節點例外,該節點沒有根節點,此節點稱為根節點 專業術語 節點父節點子節點 子孫堂兄弟 深度 從根節點到最底...

樹的基礎知識

二叉樹的儲存 連續儲存 完全二叉樹 優點 查詢某個節點的父節點和子節點 也包括沒有資料的節點 缺點 耗用記憶體空間過大 鏈式儲存一般樹的儲存 雙親表示法 求父節點方便 孩子表示法 求子節點方便 雙親孩子表示法 求父節點子節點都方便 二叉樹表示法 把乙個普通樹轉換成二叉樹來儲存具體的轉換方法 設法保證...