这道题运用的后序遍历一个很重要的性质:最后一个值是根节点,并且二叉搜索树的性质使得右子树的数全都大于左子树。
这里有三个重要的地方, 第一个是当Start值大于等于End(即为只有一个节点时,此时已经满足条件);二是当k等于End值,即在满足条件右移后找到了End说明前面都满足条件;三是在递归中应该是Start而不是0,因为第二轮递归开始的时候(c -> End-1),这里的Start就又变成了c,所以Start值不是永远为0!
这里有一个问题,这道题和上一道题不太一样,不用维护两个列表的值,因为前面和后面唯一的关系就是需要比较值,没有什么查找之类的操作。