题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
[后序遍历解决,先看左子树是否平衡二叉树,再看右子树是否平衡二叉树,最后看根的左右子树之差是否大于1]
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
boolean[] res = new boolean[1]; //全局变量
res[0]=true;
getHeight(root,1,res);
return res[0];
}
public int getHeight(TreeNode root,int level,boolean[] res){
if(root==null)
return level;
int lH=getHeight(root.left,level+1,res);//左子树最深
if(!res[0])
return level;
int rH=getHeight(root.right,level+1,res);//右子树最深
if(!res[0])
return level;
if(Math.abs(lH-rH)>1)//不是平衡二叉树
res[0]=false;
return Math.max(lH,rH);
}
}