剑指offer-二叉搜索树的后序遍历序列

Posted DeaglePc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer-二叉搜索树的后序遍历序列相关的知识,希望对你有一定的参考价值。

根据二叉搜索树的性质,根节点最小,那么后序遍历的最后一个元素一定是根节点也是最小的,比这个结点小的就是左子树,大的就是右子树,然后递归判断,如果还有元素没有被遍历到那么这个序列就不是正确的后序遍历

class Solution {
public:
    bool VerifySquenceOfBST(vector<int> sequence) {
        if(sequence.size() == 0)
            return false;
        return find(sequence, 0, sequence.size() - 1);
    }
    
    bool find(vector<int> sq,int left,int right){
        if(right - left < 1)
            return true;
        int root = sq[right];
        int l = left, r = right - 1;
        while(l < right - 1){
            if(sq[l] < root){
                l++;
            }
            else{
                break;
            }
        }
        while(r > left){
            if(sq[r] > root){
                r--;
            }
            else{
                break;
            }
        }
        if(r - l > 0)
            return false;
        return find(sq, left, r) && find(sq, l, right - 1);
    }
};

 

以上是关于剑指offer-二叉搜索树的后序遍历序列的主要内容,如果未能解决你的问题,请参考以下文章

Java 剑指offer(33) 二叉搜索树的后序遍历序列

剑指offer 二叉搜索树的后序遍历序列

剑指offer 二叉搜索树的后序遍历序列

剑指Offer-Java-二叉搜索树的后序遍历序列

剑指Offer对答如流系列 - 二叉搜索树的后序遍历序列

二叉搜索树的后序遍历序列-剑指Offer