题目

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

树中节点数量 [0, 500]。

  • 注意:规定空树也是一棵平衡二叉树。

示例

  • 输入:二叉树[5, 7, 11, null, null, 12, 9, null, null, null, null] 如下所示,
    5
   / \
  7  11
    /  \
   12   9

  • 输出:true

代码

  • DFS
class Solution {
public:
    bool res = true;
    bool isBalanced(TreeNode* root) {
        if(!root)   return true;
        dfs(root);
        return res;
    }
    
    int dfs(TreeNode* node){
        if(!node)   return 0;
        int left = dfs(node->left), right = dfs(node->right);
        if(abs(left - right) > 1)   res = false;
        return max(left, right) + 1;
    }
};

代码分析:刚开始我以为每个节点都要判断,结果发现这道题只用判断整体

题目平衡二叉树

最后修改:2022 年 02 月 07 日 09 : 51 AM
如果我的文章对你有用,请随意赞赏