题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if(root==null) return true;
return isBalancedTree(root).isBalanced;
}
public ReturnData isBalancedTree(TreeNode root){
if(root==null) return new ReturnData(true,0);
ReturnData left = isBalancedTree(root.left);
ReturnData right = isBalancedTree(root.right);
if(left.isBalanced&&right.isBalanced){
if(Math.abs(left.height-right.height)>1){
return new ReturnData(false,0);
}
return new ReturnData(true,Math.max(left.height,right.height)+1);
}
else{
return new ReturnData(false,0);
}
}
class ReturnData{//定义返回的数据结构
private boolean isBalanced;//是否平衡
private int height;//树的高度
public ReturnData(boolean isBalanced,int height){
this.isBalanced = isBalanced;
this.height = height;
}
}
}