您的位置:首页 > 其它

二叉搜索树的后序遍历序列

2015-09-20 23:57 246 查看


题目描述

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

树的后序遍历的最后一个值为树根,然后根据树根的值和二叉搜索树的性质:左子树的值小于树根,右子树的值大于树根 可以从剩余的序列中找出属于左子树的序列和属于右子树的序列,然后再用同样的方法判断左子树和右子树是不是二叉搜索树即可。

bool b(vector<int>sequence, int l, int r){
if(l >= r)
return true;
int i = l;
while(i < r && sequence[r] > sequence[i])
i++;
for (int j = r - 1; j >= i; --j)
if(sequence[j] < sequence[r])
return false;
return b(sequence, l, i-1) && b(sequence, i, r-1);
}

bool VerifySquenceOfBST(vector<int> sequence) {
if(!sequence.size())
return false;
return b(sequence, 0, sequence.size()-1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: