题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
解题思路
计算每个结点的层数 如果左子树层数和右子树层数相差大于1 return-1
否则Math.max(left,right)+1
并且可以剪枝
如果左子树层数= -1 直接return -1
如果右子树层数= -1 直接return -1
递归实现
主函数判断根节点是否为-1
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
return hight(root) != -1;
}
public int hight(TreeNode root){
if(root==null){
return 0;
}
int leftHight = hight(root.left);
if(leftHight==-1){
return -1;
}
int rightHight = hight(root.right);
if(rightHight==-1){
return -1;
}
if(Math.abs(leftHight-rightHight)>1){
return -1;
}
return Math.max(leftHight,rightHight)+1;
}
}