#一.樹的定義
樹是一種資料結構,它是由n(n>=1)個有限結點組成乙個具有層次關係的集合。
樹具有的特點有:
每個結點有零個或多個子結點
沒有父節點的結點稱為根節點
每乙個非根結點有且只有乙個父節點
除了根結點外,每個子結點可以分為多個不相交的子樹。
樹的基本術語有:
若乙個結點有子樹,那麼該結點稱為子樹根的「雙親」,子樹的根稱為該結點的「孩子」。有相同雙親的結點互為「兄弟」。乙個結點的所有子樹上的任何結點都是該結點的後裔。從根結點到某個結點的路徑上的所有結點都是該結點的祖先。##1、二叉樹的定義
每個結點最多有兩個子樹的樹結構。有五種基本形態:二叉樹可以是空集;根可以有空的左子樹或右子樹;或者左、右子樹皆為空。
二叉樹第i層上的結點數目最多為2i-1(i>=1)
深度為k的二叉樹至多有2k-1個結點(k>=1)
包含n個結點的二叉樹的高度至少為(log2n)+1
在任意一棵二叉樹中,若終端結點的個數為n0,度為2的結點數為n2,則n0=n2+1
證明:因二叉樹中所有結點的度數均不大於2,設n0表示度為0的結點個數,n1表示度為1的結點個數,n2表示度為2的結點個數。三類結點加起來為總結點個數,於是便可得到:n=n0+n1+n2 (1)由度之間的關係可得第二個等式:n=n00+n11+n2*2+1即n=n1+2n2+1 (2)
將(1)(2)組合在一起可得到n0=n2+1
定義:高度為h,且由2h-1個結點組成的二叉樹,稱為滿二叉樹如果乙個完全二叉樹的結點總數為768個,求葉子結點的個數。
n0=n2+1,帶入768=n0+n1+n2中得:768=n1+2n2+1,因完全二叉樹度為1的結點個數要麼為0,要麼為1,把n1=0或者1都代入,n1=1才符合條件。所以n2=383,所以葉子結點個數n0=n2+1=384。(1)若任意結點的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值。(2)任意結點的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值。
(3)任意結點的左、右子樹也分別為二叉查詢樹。
(4)沒有鍵值相等的結點。
二叉樹的遍歷分為以下三種:
舉個例子,看下圖(圖從網上找的):
二叉樹及二叉樹的遍歷
二叉樹的定義 樹的度為2的樹。二叉樹的遞迴定義 二叉樹或者是一棵空樹,或者是一棵由乙個根結點和兩棵互不相交的左子樹和右子樹所組成的非空樹,而左右子樹又都是一棵二叉樹。1.第i層上至多有2的i 1次方個結點。2.深度為h的二叉樹至多有2的h次方減1個結點。3.每一層都滿的二叉樹稱為滿二叉樹,只在最後一...
二叉樹的基本遍歷
define crt secure no warnings include include includestruct binnode 先序遍歷 根左右 void xianxubianli struct binnode root printf c root ch 遞迴遍歷左子樹 xianxubian...
二叉樹儲存及遍歷
二叉樹儲存及遍歷 1 樹的儲存 注意 樹的深度是從根節點開始 其深度為1 自頂向下逐層累加的,而高度是從葉節點開始 其高度為1 自底向上逐層累加的。雖然樹的深度和高度一樣,但是具體到樹的某個節點,其深度和高度是不一樣的。我的理解是 非根非葉結點的深度是從根節點數到它的,高度是從葉節點數到它的。二叉樹...