题目描述
给定一棵二叉搜索树和一个整数 。
请在树中寻找节点值等于 的节点。如果能够找到,就输出以该节点为根的整棵子树;如果树中不存在这个值,则输出空树。二叉搜索树中任意节点的左子树节点值都小于该节点值,右子树节点值都大于该节点值。
输入格式
第一行一个整数 ,表示二叉树的节点数。节点编号为 到 ,根节点编号为 ;当 时表示空树。
当 时,第二行包含 个整数 ,其中 表示节点 保存的值。
接下来 行,第 行包含两个整数 ,分别表示节点 的左孩子编号和右孩子编号。编号 表示相应孩子不存在。输入保证这些数据构成一棵合法二叉树。
最后一行输入一个整数 ,表示需要查找的节点值。
输出格式
输出查找到的子树,并按照层序遍历顺序将结果中的节点重新编号为 到 。
如果结果为空,只输出一行整数 0。否则第一行输出节点数 ,第二行输出重新编号后各节点的值,接下来 行分别输出每个节点的左、右孩子编号;编号 0 表示相应孩子不存在。
8
1428571 -1428572 7142857 -4285715 4285714 10000000 -7142858 -10000000
2 3
4 0
5 6
7 0
0 0
0 0
8 0
0 0
-10000000
1
-10000000
0 0
1
0
0 0
10000000
0
3
0 -10000000 10000000
2 3
0 0
0 0
0
3
0 -10000000 10000000
2 3
0 0
0 0
数据范围与约定
- 树中节点数在 [1, 5000] 范围内
- 1 ≤ v_i ≤
- root 是二叉搜索树
- 1 ≤ val ≤