SZ#G6BT19. 【GESP强化 六级】二叉搜索树的范围和

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

题目描述

给定一棵二叉搜索树,以及两个整数 lowlowhighhigh,请计算所有满足 lowvihighlow\le v_i\le high 的节点值之和。

区间的两个端点都包含在统计范围内。输入保证 lowhighlow\le high,并且所有节点值互不相同。

输入格式

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

最后一行输入两个整数 low,highlow,high,表示需要统计的闭区间。

输出格式

输出一个整数,表示值处在闭区间 [low,high][low,high] 内的所有节点值之和。

4
1 100000 33334 66667
0 2
3 0
0 4
0 0
1 100000
200002
5
1 75000 50000 100000 25000
0 2
3 4
5 0
0 0
0 0
1 25000
25001
8
1 28572 14286 57143 42857 100000 85714 71428
0 2
3 4
0 0
5 6
0 0
7 0
8 0
0 0
14286 85714
300000

数据范围与约定

  • 树中节点数目在范围 [1, 2 * 10410^4 ] 内
  • 1 ≤ v_i ≤ 10510^5
  • 1 ≤ low ≤ high ≤ 10510^5
  • 所有 v_i 互不相同