leetcode-110. 平衡二叉树

题目

110. 平衡二叉树

解法

在遍历树的同时,将高度差求出,如果有一个高度差的绝对值大于 1,那么就不用再继续了,可以直接退出返回 false

class Solution {
    
    private $ret = true;
    
    /**
     * @param TreeNode $root
     * @return Boolean
     */
    function isBalanced($root) {
        if (empty($root)) {
            return $this->ret;
        }
        
        $this->height($root);
        
        return $this->ret;
    }
    
    /**
     * @param TreeNode $root
     * @return int|mixed
     */
    function height($root) {
        if (!$this->ret) {
            return 0;
        }
        
        $leftH = 0;
        if (!empty($root->left)) {
            $leftH = $this->height($root->left);
        }
        
        $rightH = 0;
        if (!empty($root->right)) {
            $rightH = $this->height($root->right);
        }
        
        if ($rightH - $leftH > 1 || $rightH - $leftH < -1) {
            $this->ret = false;
        }
        
        return max($rightH, $leftH) + 1;
    }
}
posted @ 2021-06-02 18:08  吴丹阳-V  阅读(16)  评论(0编辑  收藏  举报