SZ#G6BT29. 【GESP强化 六级】另一棵树的子树

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

题目描述

给定两棵二叉树 rootrootsubRootsubRoot,请判断 rootroot 中是否包含一棵与 subRootsubRoot 完全相同的子树。

二叉树的一棵子树由某个节点以及这个节点的全部后代组成。两棵树完全相同,要求它们的结构相同,并且所有对应节点的值也相同。

输入格式

输入依次给出两棵二叉树。每棵树都使用下面的格式:

  • 第一行一个整数 nn,表示节点数;n=0n=0 表示空树。
  • n>0n>0 时,下一行包含 nn 个整数 v1,v2,,vnv_1,v_2,\ldots,v_n,表示各节点保存的值。
  • 接下来 nn 行,第 ii 行包含节点 ii 的左、右孩子编号 li,ril_i,r_i,编号 00 表示相应孩子不存在。

非空树的节点编号为 11nn,根节点编号为 11。输入保证两组数据都构成合法二叉树。

输出格式

如果 subRootsubRootrootroot 的子树,输出 true;否则输出 false

5
29 -2 28 -17 -14
0 2
3 4
5 0
0 0
0 0
5
29 -2 28 -17 -14
0 2
3 4
5 0
0 0
0 0
true
2
-29 19
0 2
0 0
2
-99 -62
0 2
0 0
false
1
8
0 0
1
8
0 0
true

数据范围与约定

  • root 树上的节点数量范围是 [1, 2000]
  • subRoot 树上的节点数量范围是 [1, 1000]
  • 104-10^4 ≤ root.val ≤ 10410^4
  • 104-10^4 ≤ subRoot.val ≤ 10410^4