樹的建立與基本操作

2021-10-10 08:21:50 字數 2252 閱讀 1191

解答想法

程式的輸入是乙個表示樹結構的廣義表。假設樹的根為 root ,其子樹森林 f = ( t1 , t2 , … , tn ),設與該樹對應的廣義表為 l ,則 l =(原子,子表 1,子表2, … ,子表 n ),其中原子對應 root ,子表i(1測試樣例1

(a,(b),(c,(d),(e,(g),(h)),(f)))
abc

degh

fdegree of tree: 3

number of nodes of degree 0: 5

number of nodes of degree 1: 0

number of nodes of degree 2: 2

number of nodes of degree 3: 1

測試樣例2

(a,(b,(c,(d),(e)),(f)),(g,(h),(i)),(j,(k,(m),(n),(o),(p,(r)))))
abc

defg

hijk

mnop

rdegree of tree: 4

number of nodes of degree 0: 9

number of nodes of degree 1: 2

number of nodes of degree 2: 3

number of nodes of degree 3: 1

number of nodes of degree 4: 1

測試樣例3

(a,(b),(c),(d,(m),(n)),(e,(o)),(f),(h))
abc

dmne

of

hdegree of tree: 6

number of nodes of degree 0: 7

number of nodes of degree 1: 1

number of nodes of degree 2: 1

number of nodes of degree 3: 0

number of nodes of degree 4: 0

number of nodes of degree 5: 0

number of nodes of degree 6: 1

#include

#define maxn 100

using

namespace std;

intmain()

;//用來記錄每個單詞的深度

int depth =-1

;//當前遍歷的深度

for(

int i =

0; i < len; i++

)else

if(tmp[i]

==')'

)else

if(tmp[i]

==','

)else

}for

(int i =

0; i < num; i++

) cout << ch[i]

<< endl;

}int degree[maxn]=;

//每個字母的度

int node[maxn]=;

//每個度的字母數量

int max =0;

//最大度

for(

int i =

0; i < num; i++)if

(level[j]

== level[i]+1

)}node[degree[i]]++

;if(degree[i]

> max)

} cout <<

"degree of tree: "

<< max << endl;

for(

int i =

0; i <= max; i++

)return0;

}

乙個度為4的節點對應有4條出邊,

乙個度為3的節點對應有3條出邊,

乙個度為2的節點對應有2條出邊,

乙個度為1的節點對應有條出邊,

葉子節點沒有出邊。

如例中:

a,b兩點都有兩個出邊,故他們的度都為2

f點的出邊有三個,所以他的度為3

其餘點都為葉子節點沒有出邊,故他們的度為0

樹的建立與基本操作

在本實驗中,程式的輸入是乙個表示樹結構的廣義表。假設樹的根為 root 其子樹森林 f t1 t2 tn 設與該樹對應的廣義表為 l 則 l 原子,子表 1 子表 2 子表 n 其中原子對應 root 子表 i 1 程式的輸出為樹的層次結構 樹的度以及各種度的結點個數。在輸出樹的層次結構時,先輸出根...

9 樹的建立與基本操作

在本實驗中,程式的輸入是乙個表示樹結構的廣義表。假設樹的根為 root 其子樹森林 f t1 t2 tn 設與該樹對應的廣義表為 l 則 l 原子,子表 1 子表 2 子表 n 例如 廣義表 a,b,c d f,g h i 表示的樹如圖所示 程式的輸出為樹的層次結構 樹的度以及各種度的結點個數。在輸...

二叉樹的建立與基本操作

編寫程式實現二叉樹的如下操作 1 建立二叉鍊錶 2 二叉樹的先序 中序 後序遍歷 3 求解二叉樹的葉子結點個 4 將二叉樹中所有結點的左 右子樹相互交換 輸入 擴充套件二叉樹先序序列 ab d ce 其中 代表空指標。輸出 二叉樹的凹入表示 二叉樹的先序序列 中序序列 後序序列 二叉樹葉子結點個數 ...