题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
Solution
class Result{
int Depth;
boolean isBanlanced;
Result(int Depth,boolean isBanlanced){
this.Depth = Depth;
this.isBanlanced = isBanlanced;
}
}
//采用后序遍历的方式,只会遍历一次节点
//需要返回多个值时,定义一个类来记录返回值
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
return helper(root).isBanlanced;
}
public Result helper(TreeNode root){
if(root == null)
return new Result(0,true);
Result left = helper(root.left);
Result right = helper(root.right);
if(left.isBanlanced && right.isBanlanced){
int diff = left.Depth - right.Depth;
if(diff <= 1 && diff >= -1){
return new Result(left.Depth > right.Depth ? left.Depth+1:right.Depth+1,true);
}
}
return new Result(0,false);
}
}