【劍指offer簡單部分11】平衡二叉樹(java)
阿新 • • 發佈:2020-12-29
題目描述
輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。
在這裡,我們只需要考慮其平衡性,不需要考慮其是不是排序二叉樹
平衡二叉樹(Balanced Binary Tree),具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。
分析
判斷二叉樹是否為平衡二叉樹,並且子樹也都要判斷,這樣巢狀結構較容易想到遞迴。寫一個方法,並且內部不斷呼叫自己,遞迴跳出條件就是,高度差超過1,若都滿足則返回true。
public class Solution {
boolean flag = true;
public boolean IsBalanced_Solution(TreeNode root) {
getDepth(root);
return flag;
}
public int getDepth(TreeNode root){
if(root==null)
return 0;
int left = getDepth(root.left);
int right = getDepth(root.right);
if(Math.abs( left-right)>1)
flag=false;
return right>left? right+1 : left+1;
}
}