题目
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
递归 自底向下, 先遍历到最左节点,然后一层层的回溯 判断是否符合平衡二叉树(即左右差不超过1);
代码
class Solution {
public boolean isBalanced(TreeNode root) {
if(root == null) retrun true;
int c = height(root);
return c >=0;
}
public int height(TreeNode root){
if(root == null) return 0;//相当于最后一节点的初始化;
int l = height(root.left);
int r = height(root.right);
if(l == -1 || r == -1 || Math.abs(l-r)>1) return -1;
else{
return Math.max(l,r)+1;
}
}