23、二叉搜索树的后序遍历序列
来源:互联网 发布:metasploit和数据库 编辑:程序博客网 时间:2024/06/13 08:54
题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
时间限制:1秒 空间限制:32768K
小知识:
二叉树和二叉搜索树:
二叉树就是普通具有左右子树结构的树,二叉搜索树又叫二叉查找树(binary search tree),是满足左子树上所有结点的值均小于它的根结点的值,右子树上所有结点的值均大于它的根结点的值 这一条件的树。
思路:递归的思想。
首先给定的序列如果满足二叉搜索树的后续遍历,说明该序列的最后一个节点是根,也就是说,序列应该可以被分为两部分,前半部分(左子树)小于根,右半部分(右子树)大于根,如下图所示。并且,这两段子序列都应该是合法的后序序列(递归)。
通过检验是否满足上一条件来判断是否符合。
代码:
class Solution {public: bool judge(vector<int> &num,int l,int r){ //只要没有不符合上述条件,就是合法的后序序列 if(l >= r) return true; int medium = r; //从后往前找到medium的位置 while(medium > l && num[medium-1] > num[r]) medium--; for(int j = medium - 1;j >= l;j--){ if(num[j] > num[r]) return false; } return judge(num,l,medium-1) && judge(num,medium,r-1); } bool VerifySquenceOfBST(vector<int> sequence) { if(sequence.size()<=0) return false; return judge(sequence,0,sequence.size()-1); }};
阅读全文
0 0
- 23、二叉搜索树的后序遍历序列
- 二叉树------二叉搜索树的后序遍历序列
- 【树5】二叉搜索树的后序遍历序列
- 题目10:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 1367:二叉搜索树的后序遍历序列 @jobdu
- 二叉搜索树的后序遍历序列
- Q24:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- java集合(7):TreeSet源码分析(jdk1.8)
- UML类图学习设计模式
- 区块链技术的五大颠覆性价值
- 自媒体头条号如何发布操作内容
- Java操作Excel文件的两种Jar包选择
- 23、二叉搜索树的后序遍历序列
- 部署好jeesite访问报jstl 问题
- js中将数字格式的日期化为yyyy-MM-dd样式
- C/C++ "#"与"##"的作用与应用
- 2017linux面试题整理
- nginx中修改server_name无效,修改为www.test.com无法访问,通过localhost可以访问
- jvm:gc算法——复制、标记清除
- 16运算符重载
- RecycleView冲突这点事儿!