二叉搜索树的后序遍历序列

题目描述

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

 

class Solution 
{
public:
bool IsBST(vector<int> sequence)
{
    int n = sequence.size();
    if (n == 1 || n == 0 )
    {
        return true;
    }
    int root = sequence[n-1];
    vector<int> leftSequence;
    vector<int> rightSequence;
    int i = 0;
    for (;i < n-1;++i)
    {
        if (sequence[i] <= root)
        {
            leftSequence.push_back(sequence[i]);
        }
        else
        {
            break;
        }
    }
    for (;i < n-1;++i)
    {
        if (sequence[i] > root)
        {
            rightSequence.push_back(sequence[i]);
        }
        else
        {
            return false;
        }
    }
    return IsBST(leftSequence) && IsBST(rightSequence);
}
//判断sequence是不是二叉树的后序遍历序列
bool VerifySquenceOfBST(vector<int> sequence)
{
    int n = sequence.size();
    if (n == 0)
    {
        return false;
    }
    return IsBST(sequence);
}
};

 

posted on 2017-02-27 02:46  123_123  阅读(183)  评论(0编辑  收藏  举报