平衡二叉树

73 阅读1分钟

题目

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过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;
        }
    }