思路分析:
樹的問題都可以考慮分治的思路。
平衡二叉樹,就是要求左、右子數都是平衡的,而且高度差不超過-1
給定乙個二叉樹,確定它是高度平衡的。對於這個問題,一棵高度平衡的二叉樹的定義是:一棵二叉樹中每個節點的兩個子樹的深度相差不會超過1。 樣例
給出二叉樹 a=, b=
a) 3 b) 3二叉樹a是高度平衡的二叉樹,但是b不是/ \ \
9 20 20
/ \ / \
15 7 15 7
/**
* definition of treenode:
* public class treenode
* }*/public class solution
public int maxdepth(treenode root)
int left=maxdepth(root.left);
int right=maxdepth(root.right);
if(left==-1||right==-1||math.abs(left-right)>1)
return math.max(left,right)+1;
}}
判斷乙個二叉樹是不是平衡二叉樹
題目 輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。分析 首先要明白平衡二叉樹的概念 平衡二叉樹必須滿足兩個條件 1 左右子樹的高度差不能大於1 2 每個根節點下面的左右子樹也必須滿足平衡二叉樹的性質。對於本題,我們首先要知道如何去求一棵二叉樹的深度,接下來我們只需要判斷每個節點是否滿足平衡二叉...
判斷二叉樹是不是平衡
題目 輸入一棵二叉樹的根結點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意結點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。例如下圖 中的二叉樹就是一棵平衡二叉樹 上面的 固然簡潔,但我們也要注意到由於乙個節點會被重複遍歷多次,這種思路的時間效率不高。例如在函式 isbalance 中輸入...
判斷是不是平衡二叉樹
問題 給出一棵二叉樹,判斷它是不是二叉樹。乙個比較容易想到的做法是,採用動態規則的方法依次求出每乙個節點的左子樹深度和右子樹深度,兩者相減,絕對值大於 1 則不是平衡樹。為了避免重複計算節點的深度,應該用後序遍歷的方法,即先計算子節點的深度,再計算當前節點的深度,這樣不會出現重複計算。如下 stru...