题解 | #二叉搜索树的后序遍历序列#
二叉搜索树的后序遍历序列
https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd
#include <climits> #include <vector> class Solution { public: bool check(vector<int> sequence){ if (sequence.size() <= 1) return true; int root = sequence[sequence.size() - 1]; int index = sequence.size() - 1; for (int i = 0; i < sequence.size() - 1; i++){ if (sequence[i] > root){ index = i; break; } } vector<int> left(sequence.begin(), sequence.begin() + index); bool left_bool = check(left); vector<int> right(sequence.begin() + index, sequence.end() - 1); bool right_bool = check(right); if (right.size() >= 1){ for (auto num : right){ if (root > num) return false; } } return left_bool && right_bool; } bool VerifySquenceOfBST(vector<int> sequence) { if (sequence.size() == 0) return false; bool result = check(sequence); return result; } };