剑指 Offer 55 - II 平衡二叉树

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

标签:剑指 Offer发布于:编辑于:浏览量:1519

概述

https://leetcode-cn.com/problems/ping-heng-er-cha-shu-lcof/

https://leetcode.com/problems/balanced-binary-tree/

递归法

递归计算左右子树的深度,如果发现不平衡就开始摆烂返回 INT_MAX,反正坏了一个就全坏了,破罐破摔呗。

class Solution {
public:
    bool isBalanced(TreeNode* root) {
        return helper(root) != INT_MAX;
    }
    
    int helper(TreeNode* root) {
        if (!root) return 0;
        if (!root->left && !root->right) return 1;
        int ld = helper(root->left);
        int rd = helper(root->right);
        if (ld == INT_MAX || rd == INT_MAX) return INT_MAX;
        if (abs(ld - rd) > 1) return INT_MAX;
        return 1 + max(ld, rd);
    }
};