在《資料結構》嚴蔚敏版上的習題看到這個問題。
繁茂度的定義:各層節點數的最大值與樹的高度的乘積
樹的深度好求,遞迴呼叫就行了。關鍵在於如何求出各層的最大節點樹?下面是我的一種實現方法:
bitree.h
#include
#include
#include
#include
using
namespace
std;
typedef
struct tnode
bitree, *pbitree;
void creat_tree(pbitree &rt)
else
}void preorderprint(pbitree &rt)
cout
<< '@'
<< endl;
}void inorderprint(pbitree &rt)
if(!s.empty())
}cout
<< '@'
<< endl;
}
/*
求二叉樹的繁茂度
*/#include "bitree.h"
#include
iint prosperity(pbitree &rt)
}return maxlevelnodes * layers;
}int main(int argc, char
const *argv)
由於跟層有關,所以很自然地想到了用層序遍歷的思路。如果層序遍歷一顆滿二叉樹,那麼下一層的結點樹是上一層的兩倍;那麼,如果上一層的某個結點缺少乙個分支,下一層就會少乙個結點,充分利用這一點,在每一層遍歷結束時就可以算出下一層有多少個節點,這樣就能得出哪一層的結點數最多,now儲存了當前層的結點數,next儲存下一層的結點數(理想情況為兩倍,缺少的減去就行了)。 二叉樹繁茂度
二叉樹的繁茂度 最大寬度 樹的高度 思路 分別求樹的最大寬度和高度,求乘積 輸入 高度為3的滿二叉樹 124 5 36 7 高度為3的完全二叉樹 124 5 36 include include include using namespace std const int maxsize 100 三元...
程式設計練習之一顆二叉樹包含另一顆二叉樹
劍指offer上的一道程式設計練習,如何確定二叉樹a包含一棵相對小一點的二叉樹b?思路 用兩個函式實現,第乙個首先判斷根結點是否相等,第二個函式繼續判斷子結構是否相等 函式一 第一步,首先從根結點入手,判斷proota的值是否與prootb的根結點的值是否相等。若相等,則在比較a樹的子結構是否包含b...
二叉樹面試題(二) 求一顆二叉樹的映象
一 二叉樹的映象就是乙個樹在鏡子裡的成像 好吧!初中的物理知識來了,哈哈,其實很簡單,採用遞迴的方法求二叉樹的映象 1 如果樹為空,直接返回null 2 如果樹不為空,求其左子樹和右子樹的映象,遞迴完成後,將左子樹的映象放在根結點的右邊,將右子樹的映象放在根結點的左邊 二 圖說 三 實現 inclu...