本题要求在二叉搜索树(BST)中,按闭区间 [low, high] 统计账户编号之和,并将结果乘以 100(因为存款=账户编号×100)。核心利用 BST 的有序性进行“剪枝”搜索(Range Sum in BST):
v < low,则整棵左子树都小于区间下限,不可能贡献答案,只需进入右子树;v > high,则整棵右子树都大于区间上限,不可能贡献答案,只需进入左子树;low ≤ v ≤ high,则当前结点贡献 v,左右子树都可能有贡献,继续分别遍历。算法可以用递归或显式栈的迭代实现。为避免栈溢出及只使用基础语法,这里给出显式栈迭代版本。最终把区间内编号和乘以 100 即为区间存款总额。
银行的核心系统采用二叉搜索树存储客户存款账户信息,以便于快速查询和资金分析。这些账户信息按照账户编号 (accountNo.)
从小到大排序(左子树 accountNo.< 父节点 accountNo.< 右子树 accountNo.) ,每个账户的 accountNo. 唯一且固定,对应的定期存款金额为账户编号的 100 倍(例如 accountNo.=1002 对应存款 100200 元)。
请基于二叉搜索树实现一个高效的计算功能,能够通过输入客户存款账户编号、区间上下限,计算该区间内账户的总存款金额(注:该区间为闭区间).
null 表示空位,用空格分隔(不要再写中括号和逗号)。low high,同一行空格分隔(等价于两行分别输入也行)。输入
1005 1002 1008 1000 1004 null 1010
1002 1008
输出
401900
说明
1002−1008 区间内的账户为 1002、1004、1005、1008 ,余额总和为 (1002+1004+1005+1008)x100=401900
本题属于以下题库,请选择所需题库进行购买