1. 程式人生 > 其它 >求二叉樹寬度

求二叉樹寬度

問題:統計二叉樹的寬度

演算法思想:運用遞迴的方法依次統計每一層的寬度,存放進陣列中,最後求出陣列最大元素的值,即是二叉樹的寬度。

程式碼如下:

 1 void LevelWidth(BiTree T, int a[], int h)    //求每一層的寬度
 2 {    //第一次呼叫為LevelWidth(T,a,0);
 3     if(T!=NULL)
 4     {
 5         a[h] += 1;
 6         LevelWidth(T->lchild, a, h + 1);
 7         LevelWidth(T->rchild, a, h + 1
); 8 } 9 } 10 11 int Width(BiTree T) //求二叉樹的寬度 12 { 13 int a[MaxSize], h = 0; //預設二叉樹從第0層開始 14 for (int i = 0; i <MaxSize; i++) 15 a[i] = 0; //初始化,每一層寬度為0 16 LevelWidth(T, a, h); //呼叫求每一層寬度的函式,把寬度儲存在陣列a[]裡 17 int wid = a[0]; 18 for (int i = 1; i <MaxSize; i++) //
遍歷陣列a[i]求最大值,即樹的寬度 19 if (a[i] > wid) 20 wid = a[i]; 21 return wid; 22 }

轉載於:https://blog.csdn.net/qq_36645322/article/details/102711846