C++ 查询一个序列是否可能是一个二叉搜索树的后序遍历

时间:2017-09-18 00:49:10   收藏:0   阅读:246

其中,最重要的是,sequence一开始如果它的值为空的话,它是要返回false。但是之后,只要sizex小于3都应该返回true

class Solution {
public:
bool VerifySquenceOfBST(vector<int> sequence) {
if (sequence.size() == 0)
{
return false;
}
return VerifySquenceOfBSTChild(sequence);
}
bool VerifySquenceOfBSTChild(vector<int> sequence)
{
if (sequence.size() < 3)
{
return true;
}
int temp = sequence[sequence.size() - 1];
vector<int> littlerVec;
vector<int> biggerVec;
int i = 0;
for (; i < sequence.size() - 1; i++)
{
if (sequence[i] < temp)
{
littlerVec.push_back(sequence[i]);
} else {
break;
}
}
for (; i < sequence.size() - 1; i++)
{
if (sequence[i] > temp)
{
biggerVec.push_back(sequence[i]);
} else {
return false;
}
}
return (VerifySquenceOfBSTChild(littlerVec) && VerifySquenceOfBSTChild(biggerVec));
}
};

原文:http://www.cnblogs.com/adamhome/p/7538827.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!