根据您提供的代码,我注意到在递归函数 m
中存在问题。当根节点为空时,无法访问 root->left
和 root->right
,因此需要在调用 m
前添加对空指针的判断。
以下是修改后的代码:
class Solution {
public:
int flag = true;
int recuring(TreeNode *root) {
if (!root) return 0;
return std::max(recuring(root->left), recuring(root->right)) + 1;
}
void m(TreeNode *root) {
if (!flag || !root) return; // 添加对空指针的判断
if (std::abs(recuring(root->left) - recuring(root->right)) > 1) flag = false;
m(root->left); // 继续遍历左子树
m(root->right); // 继续遍历右子树
}
bool isBalanced(TreeNode* root) {
if (!root) return true;
m(root);
return flag;
}
};
请注意,这只是修复了可能导致问题的部分。如果还有其他问题,请提供更多信息以便进一步排查。
内容由零声教学AI助手提供,问题来源于学员提问