验证二叉搜索树
1 | 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 |
思路1
1 | // isValidBSTLeft 左边返回最大值 |
思路2
1 | // _isValidBST从上到到下限制子树约束条件,简单方便 |
总结
可以看到两个想法实际上本质都是递归但是在处理子树最大和最小值时候是完全两种思路。
方法1:收集子树的反馈(做调查),根节点比较民主,你们报上你们的范围,我看看我跟你们匹配不不匹配我不称职好我下台。跟的父亲发现自己选的下级下台了,完了我一手提拔的下台了我也下台吧。比较民主但是实现复杂,需要记录各种状态,但是可以保存每一步子树的情况后续可以进一步扩展。
方法2:给每个子树限定范围(立规矩),跟节点“老子就这样,你们按老子标准走,不符合的滚,老子上报下是这帮儿子不行连累了我不行”。方法简单,每次只需要把根节点的值最为范围立规范。依次往下迭代就行。但是没有记录下面的状态题目变更后可能不再适用。