SZ#G6BT17. 【GESP强化 六级】二叉树的字符串表示

提交1 通过1
通过率100%
时间限制2000ms
内存限制256MiB
    ID: 11419 传统题 2000ms 256MiB 尝试: 1 已通过: 1 难度: 普及- 上传者: 标签>GESPGESP强化C++c++编程题二叉树递归字符串2星

题目描述

请按照先序遍历的顺序,把一棵二叉树转换成由整数和圆括号组成的字符串。

每个节点先写出自己的值。如果左子树非空,就紧接着写一对圆括号,括号内递归表示左子树;右子树非空时同样处理。通常可以省略不影响树与字符串一一对应的空括号,但当某个节点没有左孩子却有右孩子时,必须保留表示空左子树的 ()。空树输出空字符串。

输入格式

第一行一个整数 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 表示相应孩子不存在。输入保证这些数据构成一棵合法二叉树。

输出格式

输出按照题目规则得到的字符串。空树输出一个空行。

2
694 -60
2 0
0 0
694(-60)
6
278 -39 77 812 -853 -976
2 0
0 3
0 4
5 0
6 0
0 0
278(-39()(77()(812(-853(-976)))))
3
-461 385 453
2 3
0 0
0 0
-461(385)(453)

数据范围与约定

  • 树中节点的数目范围是 [1, 10410^4 ]
  • -1000 ≤ v_i ≤ 1000