你的代码逻辑基本上是正确的,但存在一些问题。特别是在 result
的更新上,它应该只在整个树的深度计算完毕后才更新,且应该返回当前节点的深度而不是直接对 result
进行修改。
以下是经过修正后的代码:
class Solution {
public:
int lookdepth(TreeNode* node) {
if (node == nullptr) return 0; // 如果节点为空,返回深度为0
// 递归获取左子树和右子树的深度
int lenleft = lookdepth(node->left);
int lenright = lookdepth(node->right);
// 返回当前节点的深度
return max(lenleft, lenright) + 1;
}
int maxDepth(TreeNode* root) {
return lookdepth(root); // 返回根节点的最大深度
}
};
修改说明:
- 移除
result
变量:不再使用成员变量来存储结果,因为我们只需要计算并返回当前树的深度。 - 清晰地分离功能:
lookdepth
函数专注于计算单个节点的深度,并且将这个值返回到调用者,以确保每次都是最新的数据。
通过这样调整后,你可以正确地计算出二叉树的最大深度。
内容由零声教学AI助手提供,问题来源于学员提问