力扣110 补9.7

110.平衡二叉树

用了2个函数,思路好想的。


class Solution {
    public boolean isBalanced(TreeNode root) {
        dfs(root);
        if(x>1)
        return false;
        else
        return true;
    }
    int x=0;
    int dfs(TreeNode root){//计算每个节点的子树高度差
        if(root==null){
            return 0;
        }
        if(x>1) return x;
        if(root!=null&&root.left==null&&root.right==null)
        return 0;
        x=Math.abs(dfs_tall(root.left)-dfs_tall(root.right));
        dfs(root.left);
        dfs(root.right);
        return 0;
    }
    int dfs_tall(TreeNode root){//计算该树高度
        if(root==null){
            return 0; 
        }
        if(root!=null&&root.left==null&&root.right==null){
            return 1;
        }
        return 1+Math.max(dfs_tall(root.left),dfs_tall(root.right));
    }
}

 

 

你可能感兴趣的:(力扣,leetcode,算法,数据结构,java)