题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
思路:
- 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
- 判断两边高度,我这里想着用谁子树没了就会在和左子树的比较中比较会等于-1,然后并且直接返回
- 输出与-1不等的结果,如果是的话返回的是树的高度,不等于-1然后为true
假设一下右边有1个子节点,左边没有的情况
left=0,right=1,right是 **1 + Math.max(left, right)**算出来的
然后返回高度为2就会不等于1然后达到平衡
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
return getDepth(root)!=-1;
}
private int getDepth(TreeNode root) {
if (root == null) return 0;
int left = getDepth(root.left);
if (left == -1) return -1;
int right = getDepth(root.right);
if (right == -1) return -1;
return Math.abs(left - right) > 1 ? -1 : 1 + Math.max(left, right);
}
}