【刷题日记】平衡二叉树
早上又在LeetCode上提交了一遍,
惊奇的发现(大惊小怪)在牛客网通过了在LeetCode上过不了
又仔细细看了一遍平衡二叉树的定义发现一个重点:
“每个节点”
而之前那种方法明显只能判断根结点是否为平衡二叉树啊你个菜鸡!!

以下是在LeetCode上改进的算法:
class Solution {
private:
    int depth(TreeNode* root) {
        if (!root) return 0;
return 1+max(depth(root->left), depth(root->right));
    }

public:
    bool isBalanced(TreeNode* root) {
        if (!root) return true;
        bool isBalancedNode = false;
        //判断此节点为平衡
if(abs(depth(root->left) - depth(root->right)) <= 1){
            isBalancedNode = true;
        }
        //再判断这个节点的左右子节点是否为平衡
return isBalancedNode && isBalanced(root->left) && isBalanced(root->right);
    }
};

这才完事儿~

之后还有错误,还请有幸看到的大佬指正,万分感谢。
全部评论

相关推荐

02-05 08:49
已编辑
武汉大学 Web前端
野猪不是猪🐗:36k和36k之间亦有差距,ms的36k和pdd的36k不是一个概念
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务