求二叉樹的深度和寬

2021-07-27 05:53:15 字數 941 閱讀 6522

(1)根據教材中演算法6.4所示的演算法,按照給出的先序序列建立二叉鍊錶表示的二叉樹(結點數不超過26)。

(2)計算該二叉樹的繁茂程度。

一顆二叉樹的繁茂程度為二叉樹的寬度與高度的乘積,二叉樹的寬度為各層節點數的最大值。

包含多組測試資料。每組測試資料一行,給出二叉樹的先序遍歷序列(至少1個結點)。

輸出二叉樹的繁茂程度。

abc^^de^g^^f^^^

a^^ab^^c^^ 10

14分析:本題要求計算二叉樹的繁茂程度,也就是計算二叉樹寬度和深度的成績,進而簡化到求二叉樹的深度和寬度。二叉樹的深度比較好求,首先判斷樹是否為空,如果不為空,那麼二叉樹的深度即為1+max(左子樹的深度,右子樹的深度)。二叉樹的寬度就要通過佇列來求了,對二叉樹進行層次遍歷,同一層的進隊,求出該層寬度,找出最大的。

#include#include#include#include#include#include#include#include#include#includeusing namespace std;

typedef struct bitnode*bitree,bitreenode;

char ch;

bool flag;

void creatbitree( bitree &t)//建立二叉樹

if( tmp == '^')

t = null;

else

}int getdepth( bitree t)//獲取二叉樹的深度

else

}int getwidth( bitree t)//求二叉樹的寬度

if( q.size() > maxwidth)

maxwidth = q.size();

}return maxwidth;

}int main()

return 0;

}

二叉樹(三)求二叉樹的深度

採用先序法建立一棵二叉樹,設計求該二叉樹的深度,二叉樹的資料域型別為字元型,擴充套件二叉樹的葉子結點用 表示,要求可以求多棵二叉樹的深度,當二叉樹的深度為0時程式結束。輸入描述 迴圈輸入多棵擴充套件二叉樹的先序遍歷序列,每棵樹佔一行,以回車結束,每棵二叉樹中結點之間以空格隔開輸出描述 輸出各二叉樹的...

求二叉樹的深度

題目 輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉子結點一次經過的結點形成樹的一條路徑,最長路徑的長度為樹的深度。根節點的深度為1。解體思路 如果根節點為空,則深度為0,返回0,遞迴的出口 如果根節點不為空,那麼深度至少為1,然後我們求他們左右子樹的深度,比較左右子樹深度值,返回較大的那乙個 ...

求二叉樹的深度

已知一顆二叉樹的中序遍歷序列和後序遍歷序列,求二叉樹的深度。輸入資料有多組,輸入t 代表有t 組資料。每組資料報括兩個長度小於50 的字串,第乙個字串表示二叉樹的中序遍歷,第二個表示二叉樹的後序遍歷。輸出二叉樹的深度。2 dbgeafc dgebfca lnixu linux 4 3 include...