剑指offer:二叉搜索树的后序遍历序列
来源:互联网 发布:mac matlab mex用法 编辑:程序博客网 时间:2024/05/16 11:46
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果,如果是则输出Yes,否则输出No(假设输入的数组的任意两个数字都互不相同)
class Solution {public: bool Verify(vector<int> seq) { int len = seq.size(); if(!len || len == 1 || len == 2) return true; else if(len == 3) { if(seq[0] > seq[2] && seq[1] > seq[0]) return false; else if(seq[0] > seq[2] && seq[1] < seq[2]) return false; else return true; } vector<int> left;//存放左子树 vector<int> right;//存放右子树 int num = seq[len - 1];//根节点 int i, j; for(i = 0; i < len - 1; i++) { if(seq[i] > num) break;//找到根节点所在位置,以此为界限划分左右子树,分别存放到left和right中进行递归 } if(i == 0) { right = seq; right.pop_back();//数字序列全部大于根节点,说明只有右子树,注意要把根节点弹出 } else if(i == len - 1) { left = seq; left.pop_back();//数字序列全部小于根节点,说明只有左子树,注意要把根节点弹出 } else { for(j = 0; j < len - 1; j++) { if(j < i) left.push_back(seq[j]);//划分左右子树,此时左子树肯定全小于根节点,右子树不一定 else right.push_back(seq[j]); } } for(i = 0; i < right.size(); i++) { if(num > right[i]) return false;//右子树中有大于根节点的直接返回false } return Verify(left) && Verify(right); } bool VerifySquenceOfBST(vector<int> sequence) { int len = sequence.size(); if(!len) return false; else return Verify(sequence); }};
0 0
- 剑指offer:二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指Offer-->二叉搜索树的后序遍历序列
- 《剑指offer》二叉搜索树的后序遍历序列
- 【剑指Offer】二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指 offer:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列||剑指offer
- 剑指offer-二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- [剑指offer]二叉搜索树的后序遍历序列
- 《剑指offer》-二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- XCode快捷键
- 前端学习网站
- 没有躲过的坑--windows下chrome浏览器插件不能安装
- apache kafka源码分析-Producer分析
- 18.UIStepper
- 剑指offer:二叉搜索树的后序遍历序列
- LightOJ 1019 Brush (V)
- 【持久化框架】SpringMVC+Spring4+Mybatis3集成,开发简单Web项目+源码下载
- java 在MySQL中存储文件,读取文件(包括图片,word文档,excel表格,ppt,zip文件等)
- 地图染色问题(回溯法)
- lintcode:Find Minimum in Rotated Sorted Array
- LeetCode77——Combinations
- JNI中的java类参数传递
- 枚举