跳到正文

7.3 二叉排序树、平衡二叉树·综合题讲评

40 分钟

7.3 综合题:验证BST范围

只检查结点与直接孩子不足:右子树深处也可能小于根。递归传递允许范围(low,high),要求low<key<high;左子树上界变key,右子树下界变key。

手工推演

根10,左5,5的右孩子12:局部12>5看似正确,但12位于10左子树,超出上界10,验证失败。

结构与代码

bool ok(N*p,long long lo,long long hi){return !p||(lo<p->x&&p->x<hi&&ok(p->l,lo,p->x)&&ok(p->r,p->x,hi));}

正确性

范围代表所有祖先约束的交集;每次收紧一侧,所有结点满足即等价于BST定义。

错解反馈

只查父子;用int极值再加减溢出;重复键策略未定义。

迁移训练

若允许重复键只放右侧,范围开闭应怎样?答案左严格小于,右允许大于等于。

小纸条

若允许重复键只放右侧,范围开闭应怎样?

登录 后可看答案

Practice

本课练习

0

先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。

本课练习正在补齐,暂不应标记为完成。