ZBLOG

/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func Min(a, b int) int { if a < b { return a } return b } func Recursion(node *TreeNode) ...

这段代码的问题在于 minDepth 函数中的返回值计算有误。当根节点为空时,应该返回 0 而不是 1。

以下是修正后的代码:

  1. func Min(a, b int) int {
  2. if a < b {
  3. return a
  4. }
  5. return b
  6. }
  7. func Recursion(node *TreeNode) int {
  8. if node == nil {
  9. return 0
  10. }
  11. leftDepth := Recursion(node.Left)
  12. rightDepth := Recursion(node.Right)
  13. // 如果左子树或右子树为空,则取非空子树的深度 + 1
  14. if node.Left == nil || node.Right == nil {
  15. return leftDepth + rightDepth + 1
  16. }
  17. // 否则,取左右子树深度的较小值 + 1
  18. return Min(leftDepth, rightDepth) + 1
  19. }
  20. func minDepth(root *TreeNode) int {
  21. if root == nil {
  22. return 0
  23. }
  24. return Recursion(root)
  25. }

这样就可以正确计算二叉树的最小深度了。注意在判断左右子树为空时需要单独处理。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?