二叉树的最小深度不适用于所有测试用例

问题描述 投票:0回答:1

我试图找到二叉树的最小深度;但是,示例5中的测试用例失败。我不确定在所有测试用例中都可以做到这一点的逻辑缺陷。我正在做的一个例子如下:

Example:
Given binary tree [3,9,20,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

return its minimum:
depth = 2

我有以下代码可以完成此操作:

class TreeNode {
  constructor(val) {
    this.val = val;
    this.left = this.right = null;
  }
}

const minDepth = root => {
  if (!root) return 0

  const traverse = root => {
    let counter = 1
    if (!root) return counter
    let current
    let queue = [root, 's']

    while (queue.length > 1) {
      current = queue.shift()
      if (current === 's') counter++, queue.push('s')
      if (!current.left && !current.right) return counter
      else {
        if (current.left) queue.push(current.left)
        if (current.right) queue.push(current.right)
      }
    }
    return counter
  }
  return root.left && root.right ? Math.min(traverse(root.left), traverse(root.right)) + 1 : traverse(root)
}

//example 1  
const tree1 = new TreeNode(3)
tree1.left = new TreeNode(9)
tree1.right = new TreeNode(20)
tree1.right.left = new TreeNode(15)
tree1.right.right = new TreeNode(7)

//example 2
const tree2 = new TreeNode(1)
tree2.left = new TreeNode(2)
tree2.right = new TreeNode(3)
tree2.left.left = new TreeNode(4)
tree2.right.right = new TreeNode(5)

//example 3
const tree3 = new TreeNode(0)

//example 4
const tree4 = new TreeNode(1)
tree4.left = new TreeNode(2)

//example 5 not working
const tree5 = new TreeNode(1)
tree5.left = new TreeNode(2)
tree5.left.right = new TreeNode(3)
tree5.left.right.right = new TreeNode(4)
tree5.left.right.right.right = new TreeNode(5)


console.log(minDepth(tree1))
console.log(minDepth(tree2))
console.log(minDepth(tree3))
console.log(minDepth(tree4))
console.log(minDepth(tree5))

关于我所缺少的任何想法?

我试图找到二叉树的最小深度;但是,示例5中的测试用例失败。我不确定在所有测试用例中都可以做到这一点的逻辑缺陷。我是一个例子...

javascript algorithm binary-tree tree-traversal
1个回答
0
投票

我不太确定您在这里的整体方法。您的函数似乎已设置为执行递归,但随后您在嵌套函数中进行迭代工作。两种方法对我来说都是有意义的(递归似乎更容易),但我建议您明确地选择一种。

© www.soinside.com 2019 - 2024. All rights reserved.