資料結構 樹 理論

2022-06-03 19:00:16 字數 2020 閱讀 6950

1.已知一棵深度為k的樹中有n1個度為1的結點,n2個度為2的結點,…,nk個度為k的結點,問該樹中有多少個葉子結點?

(前提:

對任何乙個二叉樹,若齊葉子結點數為n0,度為2的結點數為n2,則n0=n2+1。證明如下:

設一顆二叉樹上葉子結點數為n0,單分支結點數為n1,雙分支結點數為n2,則總結點數為:n0+n1+n2。

而一顆二叉樹中,所有結點的分支數(即度數)應等於單分支結點數加上雙分支結點數的兩倍,即總分支數=n1+2n2。

由於二叉樹中除了根結點以外,每個結點都有唯一的乙個分支指向它,因此二叉樹中:總分支數=總結點數-1。

即n1+2n2=n0+n1+n2-1。即n0=n2+1。)

是乘號哦

2.試分別畫出具有3個結點的樹和3個結點的二叉樹的所有不同形態。

3.樹的同構

4.算術式的二叉樹表示:當我們對此二叉樹進行先序、中序和後序遍歷後,便可得到表示式的字首、中綴和字尾

運算子在樹中放在非終端結點的位置上,運算元放在葉子結點處

字首:-+a*b-cd/ef (波蘭表示式)

中綴:a+b*c-d-e/f

字尾:abcd-*+ef/- (逆波蘭表示式)

其中,中綴形式是算術表示式的通常形式,只是沒有括號。在計算機內,使用字尾表示式易於求值。

6.編寫遞迴演算法:對於二叉樹中每乙個元素值為x的節點,刪去以它為跟的子樹,並釋放響應的空間

(**大神:

1/*2

輸入樣例:31

4124###3##56

27124###3##89

210123##4##537##8###

11*/

12 #include 13

using

namespace

std;

14 typedef struct

node *bitree;

19char

ch;20

bitree root, pre;

21bitree createbitree()

32return

t;33}34

35void remove(bitree t)

4142

delete t;//

delete刪除的是t指向的空間,而不是t本身

4344}45

46void print(bitree t) 52}

5354

void pre(bitree t, char

x, bitree pre)

63else

if(t->data==x)remove(t);//如果刪除的是根節點

64 pre(t->lchild, x, t);//這裡保證了第三個引數是第乙個節點的父節點 也就是pre->child==t

65 pre(t->rchild, x, t);66}

67}6869

char

dele;

70int

main()

資料結構 樹

樹的概念 1.家族樹 在現實生活中,有入如下血統關係的家族可用樹形圖表示 張源有三個孩子張明 張亮和張麗 張明有兩個孩子張林和張維 張亮有三個孩子張平 張華和張群 張平有兩個孩子張晶和張磊。以上表示很像一棵倒畫的樹。其中 樹根 是張源,樹的 分支點 是張明 張亮和張平,該家族的其餘成員均是 樹葉 而...

資料結構 樹

1 定義 樹是一種非線性結構,是一種一對多的資料結構。分析樹的結構,我們用遞迴的方法,根結點下面又可以看做是子樹。2 樹的儲存結構 我們一般用孩子兄弟法儲存。也就是把乙個結點的左邊第乙個孩子放在此結點的左邊孩子,把此結點的右兄弟放在此結點的右邊孩子。這樣就產生了二叉樹。二叉樹和樹可以相互對應。3 二...

資料結構 樹

二叉樹性質回顧 滿二叉樹 完全二叉樹等 給定一棵二叉樹,要求分層遍歷該二叉樹,即從上到下按層次訪問該樹,每一層單獨輸出一行,每一層要求訪問的順序為從左到右。我們在遍歷的過程中將該層節點的孩子節點壓入乙個佇列,這樣就可以實現從上到下一層一層地遍歷該二叉樹。層序遍歷 並分層列印 如果不用分層的話只用佇列...