#判斷乙個樹是二叉平衡樹
平衡二叉樹十是一種高度自平衡樹,它的任何乙個結點的左右子樹的高度之差不會查過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 ...