递归之二叉搜索树一题

题目链接:https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd?tpId=13&tqId=11176&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

代码如下:

class Solution {
public:
    bool VerifySquenceOfBST(vector<int> sequence) {
        return bst(sequence , 0 , sequence.size() - 1);
    }
    bool bst(vector<int> sequence , int begin , int end)
    {
        if(sequence.empty() || begin > end)
            return false;
        int i = begin;
        for(; i < end ; i ++)
        {
            if(sequence[i] > sequence[end])
                break;
        }
        for(int j = i + 1 ; j < end; j++)
        {
            if(sequence[j] < sequence[end])
                return false;
        }
        bool left = true;
        if(i > begin)
            left = bst(sequence , begin , i - 1);
        bool right = true;
        if(i < end)
            right = bst(sequence , i , end - 1);
        return left && right;
    }
};

该题又是一个递归运用的很好的例子~

猜你喜欢

转载自www.cnblogs.com/zf-blog/p/9879455.html