题解 | #JZ33 二叉搜索树的后序遍历序列#

从上往下打印二叉树

http://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701

//递归
class Solution {
public:
    
    bool isBST(vector<int> sequence) {
        if (sequence.empty()) return true;
        
        int rootV = sequence.back();    //取出根节点
        sequence.pop_back();
        
        int pos = 0;
        while (pos < sequence.size()) {    //找出左子树
            if (sequence[pos] > rootV) break;
            ++pos;
        }
        
        while (pos < sequence.size()) {    //右子树均大于根节点
            if (sequence[pos] < rootV) return false;
            ++pos;
        }
        
        //左子树和右子树是否是二叉搜索树
        return isBST(vector<int>(sequence.begin(), sequence.begin()+pos))
            && isBST(vector<int>(sequence.begin()+pos, sequence.end()));
    }
    
    bool VerifySquenceOfBST(vector<int> sequence) {
        if (sequence.empty()) return false;
        
        return isBST(sequence);
     }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务