二叉树平衡检查DFS

二叉树平衡检查

http://www.nowcoder.com/questionTerminal/b6bbed48cd864cf09a34a6ca14a3976f

思想:
检查每个节点的左子树深度(ldeep)和右子树深度(rdeep)
如果相差超过1,则设置标志位
/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/

class Balance {
public:
    int flag = 0;
    int dfs(TreeNode* root, int deepth) {
        if (root == NULL) {
            return deepth;
        }
        
        int ldeep = dfs(root->left, deepth + 1);
        int rdeep = dfs(root->right, deepth + 1);
        
        if (abs(ldeep - rdeep) > 1) {
            flag = 1;
        }
        
        return max(ldeep, rdeep);
    }
    bool isBalance(TreeNode* root) {
        dfs(root, 0);
        return flag == 0;
    }
};


全部评论
运行不了呀
点赞 回复 分享
发布于 2022-02-24 09:41

相关推荐

点赞 评论 收藏
分享
能干的三文鱼刷了100道题:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务