SZ#G6BT06. 【GESP强化 六级】翻转二叉树

提交1 通过1
通过率100%
时间限制2000ms
内存限制256MiB

题目描述

给定一棵二叉树。对树中的每个节点,都交换它的左孩子和右孩子,这一操作称为翻转二叉树。

请完成整棵二叉树的翻转,并输出翻转后的树。空树翻转后仍然是空树。

输入格式

第一行一个整数 nn,表示二叉树的节点数。节点编号为 11nn,根节点编号为 11;当 n=0n=0 时表示空树。

n>0n>0 时,第二行包含 nn 个整数 v1,v2,,vnv_1,v_2,\ldots,v_n,其中 viv_i 表示节点 ii 保存的值。

接下来 nn 行,第 ii 行包含两个整数 li,ril_i,r_i,分别表示节点 ii 的左孩子编号和右孩子编号。编号 00 表示相应孩子不存在。输入保证这些数据构成一棵合法二叉树。

输出格式

输出结果二叉树,并按照层序遍历顺序将结果中的节点重新编号为 11mm

如果结果为空,只输出一行整数 0。否则第一行输出节点数 mm,第二行输出重新编号后各节点的值,接下来 mm 行分别输出每个节点的左、右孩子编号;编号 0 表示相应孩子不存在。

0
0
7
13 24 -9 30 28 22 7
2 3
0 4
5 6
0 0
0 0
0 7
0 0
7
13 -9 24 22 28 30 7
2 3
4 5
6 0
7 0
0 0
0 0
0 0
7
14 -21 20 -6 -10 -11 30
2 3
4 5
0 0
6 7
0 0
0 0
0 0
7
14 20 -21 -10 -6 30 -11
2 3
0 0
4 5
0 0
6 7
0 0
0 0

数据范围与约定

  • 树中节点数目范围在 [0, 100] 内
  • -100 ≤ v_i ≤ 100