C++ 中平衡二叉樹的數量
給定二叉樹的高度 H。目標是找到給定高度的平衡二叉樹的數量/計數。
二叉樹 - 是一種樹形資料結構,其中每個節點最多有兩個子節點,分別是左子節點和右子節點。
高度平衡二叉樹 - 定義為二叉樹,其中每個節點的兩個子樹的深度之差僅為 1 或 0。即每個節點的左子樹和右子樹的高度差最大為 1。
下圖包含了高度 h=3 的所有可能的平衡二叉樹。
輸入
Height H=2
輸出
Count of Balanced Binary Trees of Height H is : 3
解釋 - 給定圖包含了高度 H=2 的所有可能的平衡樹
輸入
Height H=3
輸出
Count of Balanced Binary Trees of Height H is : 15
下面程式中使用的思路如下
整數 H 用於表示二叉樹的高度。
函式 countBTheight(int h) 以樹的高度作為輸入,並返回高度為 h 的所有可能的平衡二叉樹的數量。
我們使用遞迴方法。
如果樹的高度為 1,即它只有一個節點,則只有一個具有單個節點的樹存在且它是平衡的。(if(h==1),返回 1)
否則,高度是左子樹和右子樹的高度之和,其高度比根節點小一或二。(平衡樹的高度差為 1)。
函式返回計數作為結果。
示例
#include <iostream> int countBTheight(int h){ // One tree is possible with height 0 or 1 if (h == 0 || h == 1) return 1; return countBTheight(h-1) * (2 *countBTheight(h-2) + countBTheight(h-1)); } int main(){ int H = 4; std::cout << "Count of balanced binary trees of height H is: "<<countBTheight(H); }
輸出
Count of balanced binary trees of height H is: 315
廣告