二叉树平衡检查LeetCode简单题

平衡的定义如下,已知对于树中的任意一个结点,若其两颗子树的高度差不超过1,则我们称该树平衡。现给定指向树根结点的指针TreeNode* root,请编写函数返回一个bool,表示该二叉树是否平衡。

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/

class Balance {
public:
    bool isBalance(TreeNode* root) {
        // write code here
        dfs(root, 0);
        return flag;
    }
    int dfs(TreeNode* root, int depth){
        if(root == 0) return depth;
        int ld = dfs(root->left, depth+1);
        int rd = dfs(root->right, depth+1);
        if(abs(ld - rd) > 1) flag = 0;
        return max(ld, rd);
    }
    bool flag = 1;
};

上一篇:JDK源码——try catch finally异常


下一篇:使用 docker 部署 elasticsearch 并安装 ik 中文分词器