二叉搜索树的后序遍历序列
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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); } };