Menu
CoddyTech

Symmetric Tree

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

你会得到一个按层序存储在数组 tree 中的二叉树。根节点位于索引 0,索引 i 处节点的左子节点位于 2*i+1,右子节点位于 2*i+2,-1 表示空位置,数组末尾还可能有多余的 -1 项。如果这棵树沿着穿过根节点的垂直线呈镜像对称,则返回 true,否则返回 false。树的形状和值都必须匹配。

函数

isSymmetric(tree: integer-array) → boolean
treeinteger-array
二叉树按层序排列,空位置用 -1 表示
返回值boolean
如果这棵树是镜像的,则为 true,否则为 false

约束条件

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

示例

输入
tree = [1, 2, 2, 3, 4, 4, 3]
输出
true
解释
沿中间折叠这棵树。索引为 1 和 2 的两个 2 会重合,索引为 3 和 6 的外侧两个 3 会重合,索引为 4 和 5 的内侧两个 4 会重合。
challenge icon

进阶

如果这个形状是对称的,但有些值不同,那么至少需要更改多少个节点的值,才能让这棵树对称?

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

测试 #1

测试 #2

测试 #3

参数

tree = [1, 2, 2, 3, 4, 4, 3]

预期输出

true