Menu
CoddyTech

Diameter of Binary Tree

简单树的遍历python iconjava iconcpp iconc iconjs icon+10

给定一个按层序存储在数组 tree 中的二叉树。根节点位于索引 0,索引为 i 的节点的左子节点位于 2*i+1,右子节点位于 2*i+2,-1 表示空位置,数组末尾可能还有多余的 -1 项。返回这棵树的直径:任意两个节点之间最长路径上的边数。路径可以经过根节点,也可以只位于某个子树内。

函数

diameterOfBinaryTree(tree: integer-array) → integer
treeinteger-array
按层序表示的二叉树,空位置用 -1 表示
返回值integer
两个节点之间最长路径上的边数

约束条件

  • 1 ≤ tree.length ≤ 32767
  • 每个 tree[i] 都是 -1,或满足 0 ≤ tree[i] ≤ 1000 的值。
  • tree[0] 永远不会是 -1,所以这棵树至少有一个节点。
  • 数组末尾在最后一个节点之后可能还有额外的 -1 条目。
  • 空位置的两个子节点也都是空的,且深度最多为 14。

示例

输入
tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]
输出
4
解释
路径 7、4、3、8、6 有 5 个节点和 4 条边。它在根节点处分叉:左边向下 3 条边,右边向下 1 条边。
challenge icon

进阶

你会如何返回路径本身,也就是从直径一端到另一端的节点值?

重置代码
def diameterOfBinaryTree(tree):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

tree = [8, 3, 6, 1, 4, -1, -1, -1, -1, 7]

预期输出

4