我的代码有什么问题(用于解决leetcode问题的BFS的javascript实现)

时间:2019-01-23 04:18:22

标签: javascript binary-tree depth-first-search

我正在实现对二叉树的BFS搜索,以解决leetCode上的问题。 leetCode问题是:

标题:662。二叉树的最大宽度

说明:

给出一棵二叉树,编写一个函数以获取给定树的最大宽度。树的宽度是所有级别之间的最大宽度。二叉树与完整的二叉树具有相同的结构,但是某些节点为空。

一层的宽度定义为末端节点之间的长度(该层中最左边和最右边的非空节点,其中末端节点之间的空节点也计入长度计算。 / p>

示例:

输入:

       1
     /   \
    3     2
   / \     \  
  5   3     9 

输出:4 说明:第三层中存在的最大宽度为4(5,3,null,9)。

==============

我的Java代码:

const widthOfBinaryTree = (root) => {
  let nodeItemList = [{ node: root, index: 0 }];
  let ans = 1;
  while (nodeItemList.length > 0) {
    const newNodeItemList = [];
    for (const nodeItem of nodeItemList) {
      if (nodeItem.node.left !== null) {
        newNodeItemList.push({ node: nodeItem.node.left, index: nodeItem.index * 2 });
      }
      if (nodeItem.node.right !== null) {
        newNodeItemList.push({ node: nodeItem.node.right, index: nodeItem.index * 2 + 1 });
      }
    }
    if (newNodeItemList.length === 0) break;
    const begin = newNodeItemList[0].index;
    const end = newNodeItemList[newNodeItemList.length - 1].index;
    ans = Math.max(ans, end - begin + 1);
    nodeItemList = newNodeItemList;
  }
  return ans;
}

在我自己仔细检查了几次之后,逻辑对我来说是完全可以的。但是它在leetcode的一个特殊测试案例中失败了。

您可以将我的代码粘贴到leetcode中,以查看故障测试用例。 问题链接: https://leetcode.com/problems/maximum-width-of-binary-tree/

0 个答案:

没有答案