二叉樹的定義

2021-09-12 13:00:02 字數 1440 閱讀 7120

樹的概念 

子節點和父節點(是相對定義的): 

一棵樹的根節點稱為該樹的子樹的根節點的父節點 

子樹的根是樹根的子節點

邊:從父節點到子節點的連線(邊有方向)

兄弟節點:父節點相同的節點互為兄弟節點

樹葉、分支節點:沒有子節點的節點稱為樹葉,樹中的其餘節點稱為分支節點(分支節點可只有乙個分支)

祖先和子孫:基於父節點/子節點關係和傳遞性,可以確定相應的傳遞關係,稱為祖先關係或子孫關係

度數:乙個節點的子節點個數稱為該節點的度數

路徑、路徑長度: 

從乙個祖先節點到其子孫節點的一系列邊稱為樹中一條路徑(從一棵樹的根到樹中任乙個節點都有唯一路徑) 

路徑中邊的條數稱為路徑的長度,認為每個節點到自身有長0的路徑

節點的層數: 

樹根到節點的路徑長度是該節點的層數 

節點都有層數,根所在的層為0

高度(或深度): 

樹的高度或深度是樹中節點的最大層數(最長路徑的長度)加1 

空樹高度為0,只有根節點的樹高度為1

二叉樹的定義:

二叉樹是一種樹形結構: 

特點是與每個節點關聯的子節點至多有兩個(可為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()

二叉樹的定義

滿二叉樹 除葉子結點外,所有結點均有兩個子結點。所有葉子結點在同一層。完全二叉樹 若設二叉樹的深度為h,除第 h 層外,其它各層 1 h 1 的結點數都達到最大個數,第 h 層所有的結點都連續集中在最左邊,這就是完全二叉樹 可以根據公式進行推導,假設n0是度為0的結點總數 即 葉子結點 數 n1是度...

二叉樹的定義

二叉樹的基本資料結構 使用陣列構造二叉樹 迭代方式實現先序 中序遍歷 水平遍歷 class btree else public function setleft bt2 public function setright bt2 public function setkey key function ...

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...