(个人水平有限,请见谅!)
题目描述:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
代码示例:
class Solution {
public:
bool VerifySquenceOfBST(vector<int> sequence) {
if (sequence.size() == 0)
return false;
return dfs(sequence);
}
bool dfs(vector<int> sequence)
{
if (sequence.size() <= 1)
return true;
vector <int> left, right;
int cnt = -1;
for (int i = 0; i < sequence.size()-1; i++)
{
if (sequence[i] < sequence[sequence.size()-1])
left.push_back(sequence[i]);
else
{
cnt = i;
break;
}
}
for (int i = cnt; i < sequence.size()-1; i++)
{
if (sequence[i] < sequence[sequence.size()-1])
return false;
else
right.push_back(sequence[i]);
}
return dfs(left) && dfs(right);
}
};