ZBLOG

class Solution { public: int result = 0; int lookdepth(TreeNode* node) { if(node == nullptr)return 0; int lenleft = lookdepth(node->left); int lenright = lookdepth(node->right); result = max(result,max(l...

你的代码逻辑基本上是正确的,但存在一些问题。特别是在 result 的更新上,它应该只在整个树的深度计算完毕后才更新,且应该返回当前节点的深度而不是直接对 result 进行修改。

以下是经过修正后的代码:

  1. class Solution {
  2. public:
  3. int lookdepth(TreeNode* node) {
  4. if (node == nullptr) return 0; // 如果节点为空,返回深度为0
  5. // 递归获取左子树和右子树的深度
  6. int lenleft = lookdepth(node->left);
  7. int lenright = lookdepth(node->right);
  8. // 返回当前节点的深度
  9. return max(lenleft, lenright) + 1;
  10. }
  11. int maxDepth(TreeNode* root) {
  12. return lookdepth(root); // 返回根节点的最大深度
  13. }
  14. };

修改说明:

  1. 移除 result 变量:不再使用成员变量来存储结果,因为我们只需要计算并返回当前树的深度。
  2. 清晰地分离功能lookdepth 函数专注于计算单个节点的深度,并且将这个值返回到调用者,以确保每次都是最新的数据。

通过这样调整后,你可以正确地计算出二叉树的最大深度。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22602

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?