【刷题日记】平衡二叉树
早上又在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);
}
};
这才完事儿~
之后还有错误,还请有幸看到的大佬指正,万分感谢。
早上又在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);
}
};
这才完事儿~
之后还有错误,还请有幸看到的大佬指正,万分感谢。
全部评论
相关推荐
![](https://static.nowcoder.com/fe/file/oss/1715049343797JOCFB.png)
点赞 评论 收藏
分享
点赞 评论 收藏
分享
![](https://static.nowcoder.com/fe/file/oss/icon_job.png)
点赞 评论 收藏
分享