美文网首页
剑指offer 60- 平衡二叉树

剑指offer 60- 平衡二叉树

作者: 顾子豪 | 来源:发表于2021-06-05 10:44 被阅读0次

输入一棵二叉树的根结点,判断该树是不是平衡二叉树。

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

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

样例

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

输出:true

分析:
递归实现
时间复杂度:O(N) N为二叉树的结点个数

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool res = true;
    bool isBalanced(TreeNode* root) {
        dfs(root);
        return res;
    }
    
    int dfs(TreeNode* root) {
        if(!root) return 0;
        int left = dfs(root->left);
        int right = dfs(root->right);
        if (abs(left-right) > 1) res = false;
        return 1+left+right;
    }
};

相关文章

网友评论

      本文标题:剑指offer 60- 平衡二叉树

      本文链接:https://www.haomeiwen.com/subject/tflojltx.html