(剑指offer)二叉搜索树的后序遍历序列
2018-03-22 19:36
253 查看
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。bool VerifySquenceOfBST(vector<int> sequence) { if(sequence.empty())return false; const int root=sequence.back(); bool flagl=true,flagr=true; vector<int>::iterator itb=sequence.begin(),ite; vector<int> temp; while(*itb<root&&itb<sequence.end()-1)itb++; ite=itb; while(ite<sequence.end()-1) { if(*ite<root)return false; ite++; } if(itb>sequence.begin())//至少有一个值才递归左子叶 { temp.assign(sequence.begin(),itb); flagl=VerifySquenceOfBST(temp); } if(itb<sequence.end()-1)//至少有一个根值和一个右子叶 { temp.assign(itb,sequence.end()-1); flagr=VerifySquenceOfBST(temp); } return flagl&&flagr; } int main() { vector<int> a= {1,8,2,4,6,7,3}; cout<<VerifySquenceOfBST(a)<<endl; return 0; }
assign(a,b);放入的是a到b-1。
相关文章推荐
- 剑指offer系列-T24_2二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 《剑指offer》二叉搜索树的后序遍历序列
- [剑指offer学习心得]之:二叉搜索树的后序遍历序列
- 剑指offer(五十九)之二叉搜索树的后序遍历序列
- 剑指offer——二叉搜索树的后序遍历序列
- 《剑指offer》(面试题24):二叉搜索树的后序遍历序列
- (剑指Offer)面试题24:二叉搜索树的后序遍历序列
- 《剑指offer》面试题24:二叉搜索树的后序遍历序列
- 剑指offer—二叉搜索树的后序遍历序列
- 《剑指offer》刷题笔记(举例让抽象具体化):二叉搜索树的后序遍历序列
- 剑指offer-二叉搜索树的后序遍历序列
- 剑指offer面试题24-二叉搜索树的后序遍历序列
- 《剑指Offer》读书笔记---面试题24:二叉搜索树的后序遍历序列
- 剑指Offer:面试题24 二叉搜索树的后序遍历序列
- 剑指Offer——二叉搜索树的后序遍历序列
- 《剑指Offer》面试题24:二叉搜索树的后序遍历序列
- 剑指Offer:二叉搜索树的后序遍历序列
- 剑指offer(20)-二叉搜索树的后序遍历序列