输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
这道题的关键在于要明白,儿茶搜索树有哪些特点。任何一个左子树的值都要小于根节点的值,任何一个右子树的值都要大于根节点的值。
根据这个特点来判断这个树是不是二叉排序树。
class Solution {
public:
bool VerifySquenceOfBST(vector<int> sequence) {
int len = sequence.size();
if(len == 0)return false;
bool isTrue = bst(sequence,0,len-1);
return isTrue;
}
bool bst(vector<int> sequence,int i,int len)
{
int root = sequence[len];
if(i >= len)return true;
for(;i < len;i++)
{
if(sequence[i] > root)break;
}
int sign = i;
for(;i<len;i++)
if(sequence[i]<root)return false;
return bst(sequence,i,sign-1)&&bst(sequence,sign,len-1);
}
};
原文:https://www.cnblogs.com/littleswan/p/12704072.html