如何判斷乙個樹是否是平衡二叉樹

2021-08-25 08:54:14 字數 890 閱讀 8537

#判斷乙個樹是二叉平衡樹

平衡二叉樹十是一種高度自平衡樹,它的任何乙個結點的左右子樹的高度之差不會查過1。

遞迴方法:從定義個就可以寫出乙個遞迴的解法,先求左右子樹是否平衡然後,再判斷自己是否平衡。**如下

class

solution

private

:int

treedepth

(treenode* proot)

};

遞迴解法2:遞迴演算法每次先計算左右子樹的深度,再計算本身的深度,然後遞迴的判斷左右子樹的時候,又計算了左右子樹的深度,這是很不合理的方法,那麼想要規避這個情況就可以把深度記錄下來,用乙個變數記錄每個節點的深度,並且借助遞迴後序遍歷樹,從而先訪問左子樹,再訪問右子樹,有了這兩邊的高度,再判斷本身。

class

solution

private

:bool

isbalanced_solution

(treenode* proot,

int& depth)

int left=

0,right=0;

if(isbalanced_solution

(proot-

>left,left)

&&isbalanced_solution

(proot-

>right,right))}

return0;

}};

比較,第一種方法是遞迴求深度,從上往下判斷是否平衡,有很多重複計算。第二種方法則是後序遍歷,用乙個變數保持深度,從下往上判斷,只計算了一次。這個原因就在於下面平衡了,只需判斷上面就可以,而上面平衡下面確不一定平衡,所以自下而上更好。

二叉樹 判斷乙個樹是否是平衡二叉樹

題目 給定乙個二叉樹,判斷其是否是平衡二叉樹。方法一 bool isbalancedtree treenode root bool ltree isbalancedtree root left bool rtree isbalancedtree root right if ltree rtree r...

判斷二叉樹是否是平衡樹

面試題39 輸入一顆二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中節點的左右子樹的深度相差不超過1,那麼它就是一顆平衡二叉樹 判斷二叉樹是不是平衡樹 bool isbalanced binarytreenode proot,int height int leftheight int rig...

判斷二叉樹是否是平衡二叉樹

二叉樹的節點定義為 public class treenode 二叉樹的深度 根節點到葉節點的最長路徑長度 平衡二叉樹 二叉樹中任一節點的左右子樹的深度相差不超過1 遞迴的方法 如下 public boolean isbalanced treenode root intleft getheight ...