資料結構 樹與二叉樹

2021-09-29 07:04:29 字數 1646 閱讀 6005

樹是一類重要的非線性資料結構,是以分支關係定義的層次結構

定義:

樹(tree)是n(n>0)個結點的有限集t,其中: 有且僅有乙個特定的結點,稱為樹的根(root)

當n>1時,其餘結點可分為m(m>0)個互不相交的有限集t1,t2,……tm,其中每乙個集合本身又是一棵樹,稱為根的子樹(subtree)

特點: 樹中至少有乙個結點——根 樹中各子樹是互不相交的集合

基本術語

結點(node)——表示樹中的元素,包括資料項及若干指向其子樹的分支

結點的度(degree)——結點擁有的子樹數 葉子(leaf)——度為0的結點

孩子(child)——結點子樹的根稱為該結點的孩子

雙親(parents)——孩子結點的上層結點叫該結點的~

兄弟(sibling)——同一雙親的孩子

樹的度——一棵樹中最大的結點度數

結點的層次(level)——從根結點算起,根為第一層,它的孩子為第二層……

深度(depth)——樹中結點的最大層次數

森林(forest)——m(m0)棵互不相交的樹的集合

二叉樹

定義:二叉樹是n(n0)個結點的有限集,它或為空樹(n=0),或由乙個根結點和兩棵分別稱為左子樹和右子樹的互不相交的二叉樹構成

特點 每個結點至多有二棵子樹(即不存在度大於2的結點) 二叉樹的子樹有左、右之分,且其次序不能任意顛倒

性質  1.二叉樹第i層至多有2^(n-1)個節點(i>=1)

2.深度為k的二叉樹至多有2^k-1個結點(k>=1)

3.對任何一棵二叉樹t,如果其終端結點數為n0,度為2的結點數為n2,則n0=n2 1

證明:n1為二叉樹t中度為1的結點數

因為:二叉樹中所有結點的度均小於或等於2

所以:其結點總數n=n0 n1 n2

又二叉樹中,除根結點外,其餘結點都只有乙個分支進入

設b為分支總數,則n=b 1 

又:分支由度為1和度為2的結點射出

所以b=n1 2n2

於是,n=b 1=n1 2n2 1=n0 n1 n2

所以:n0=n2 1

特殊形式的二叉樹

滿二叉樹:一棵深度為k且有2^k-1個節點的二叉樹稱為滿二叉樹

完全二叉樹:深度為k,有n個結點的二叉樹當且僅當其每乙個結點都與深度為k的滿二叉樹中編號從1至n的結點一

一對應時,稱為完全二叉樹.

特點:葉子結點只可能在層次最大的兩層上出現

對任一結點,若其右分支下子孫的最大層次為l

則其左分支下子孫的最大層次必為l 或l 1

性質  1.具有n個節點的完全二叉樹的深度為 log2^n 1

2.如果對一棵有n個結點的完全二叉樹的結點按層序編號,則對任一結點i(1<=i<=n),有:

(1) 如果i=1,則結點i是二叉樹的根,無雙親;如果i>1,則其雙親是i/2

(2) 如果2i>n,則結點i無左孩子;如果2i<=n,則其左孩子是2i

(3) 如果2i 1>n,則結點i無右孩子;如果2i 1<=n,則其右孩子是2i 1

資料結構 樹與二叉樹

一 性質 1 在二叉樹中,第i層的結點總數不超過2 i 1 2 深度為h的二叉樹最多有2 h 1個結點 h 1 最少有h個結點 3 對於任意一棵二叉樹,如果其葉結點數為n0,而度數為2的結點總數為n2,則n0 n2 1 4 具有n個結點的完全二叉樹的深度為int log2n 1 5 給定n個節點,能...

資料結構 樹與二叉樹

1 樹的定義 樹是一種 非線性的資料結構。樹是n n 0 個結點的有限集,在任意一棵非空樹中 1 有且僅有乙個特定的被稱為 根 root 的結點 2 當n 1時,其餘結點可分為m m 0 個互不相交的有限集,其中每個集合本身又是一棵樹,並且稱為根的 子樹 subtree 3 每棵子樹也是由唯一的根結...

資料結構 樹與二叉樹

13 樹 森林與二叉樹 14 哈夫曼樹 15 並查集 16 層次遍歷二叉樹 typedef struct nodebitnode,bitree 乙個二叉樹有n個結點,則有2n個鏈域,其中有n 1個空鏈域 非空鏈域 n 1 出邊數 void preorder bitree root void inor...