求二叉樹寬度


問題:統計二叉樹的寬度

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

代碼如下:

 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM