110. 平衡二叉树

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/balanced-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


平衡二叉树的定义是:任意的左右子树的高度差不能超过1。
先找到叶子节点,从叶子节点回溯。判断左右子树的高度差,超过1就返回-1,表示不符合的,回溯中判断,只要返回的是-1,说明不符合,不用再进行判断了。

 public boolean isBalanced(TreeNode root) {
        return getDep(root) != -1;

    }

    public int getDep(TreeNode node) {
        if(node == null) {
            return 0;
        }
        int left = getDep(node.left);
        if(left == -1) {
            return -1;
        }
        int right = getDep(node.right);
        if(right == -1) {
            return -1;
        }
        if(Math.abs(left-right) >1) {
            return -1;
        }
        // 返回高度
        return Math.max(left,right)+1;
        

    }
posted @ 2022-02-23 14:15  一颗青菜  阅读(1)  评论(0)    收藏  举报