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

来源:互联网 发布:gnu和linux的关系 编辑:程序博客网 时间:2024/06/10 21:14

华电北风吹
天津大学认知计算与应用重点实验室
日期:2015/10/3

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

解析:二叉搜索树后序遍历,所以最后一个元素是这颗子树的根节点,然后由于左子树小于树根,右子树大于树根,可以直接判断当前节点是否满足BST性质,然后递归左右子树即可。

class Solution {public:    bool VerifySquenceOfBST(vector<int> sequence)    {        vector<int> v1,v2;        int length=sequence.size();        if(length<=1)            return length;        int i=0,bound;        while(sequence[i]<sequence.back() && i<length-1)        {            v1.push_back(sequence[i]);            i++;        }        bound=i-1;        for(;i<length-1;i++)        {            v2.push_back(sequence[i]);            if(sequence[i]<sequence.back())                return false;        }        return ((v1.size()==0) || (VerifySquenceOfBST(v1))) && ((v2.size()==0)||(VerifySquenceOfBST(v2)));    }};
0 0
原创粉丝点击