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
本课练习
先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。
本课练习正在补齐,暂不应标记为完成。