剑指offer 排序二叉树的合法性
来源:互联网 发布:iphone的看书软件 编辑:程序博客网 时间:2024/06/17 17:06
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思路:由二叉排序树(二叉搜索树)的性质可知,左边子数上的任意节点都要比根节点小,且右边子数上的任意节点都要比根节点大。则根据这个性质,我们可以运用递归解决这个问题,由后序序列的性质有,最后一个节点必定是根节点。那么可以找到第一个比根节点大的数,那么就是右子树的开头,然后在慢慢递归下去,将序列分为两部分。
代码为:
/*二叉搜索树也为二叉排序数,即一个节点的左子树上的节点均小于根节点而右子数上的节点均大于根节点*/class Solution {public: bool Judge(vector<int> sequence,int start,int end) { int i; if(start==end) return true; for(i=start;i<end;i++) if(sequence[i]>sequence[end]) break; for(int j=i;j<end;j++) if(sequence[j]<sequence[end]) return false; bool left = true; bool right = true; if(i>0) left = Judge(sequence,start,i-1); if(i<end-1) right = Judge(sequence,i,end-1); return left&&right; } bool VerifySquenceOfBST(vector<int> sequence) { int length = sequence.size(); if(length==0) return false; bool ok = Judge(sequence,0,length-1); return ok; }};
阅读全文
0 0
- 剑指offer 排序二叉树的合法性
- 判断二叉搜索树的合法性
- 【面试题】剑指Offer-27-将二叉搜索树转换成排序的双向链表
- 剑指offer面试题-二叉搜索树转换成一个排序的双向链表
- 剑指Offer: 二叉树
- 剑指offer: 二叉树的深度(树)
- 剑指Offer之二叉树的深度
- 【剑指offer】二叉树的镜像
- 二叉树的子树(剑指offer)
- [剑指Offer]二叉树的镜像
- 《剑指offer》二叉树的遍历
- 剑指offer--二叉树的镜像
- 剑指offer--二叉树的深度
- 剑指offer之二叉树的深度
- 剑指offer--二叉树的下一个结点
- 剑指offer--对称的二叉树
- 剑指Offer之 - 二叉树的深度
- 剑指offer-39 二叉树的深度
- 【蓝桥杯】【第一个数字】
- Http协议的Delete和Put方法是做什么的?怎么用?
- HBase的NoSuchMethodError:org.apache.hadoop.net.NetUtils.getInputStream异常解决办法
- 深度学习平台Theano环境搭建【GPU版】
- reportNG定制化修改-支持中文、首页添加饼图、报告显示图片
- 剑指offer 排序二叉树的合法性
- HTTP Methods 的绝佳描述(来自“Web Scraping with Python”第88页)
- The Application of Cisco compatible 10GBASE-T Transceiver
- IDEA添加项目为library
- LeetCode 12. Integer to Roman
- SQLCipher的导入和基本使用
- 2017-10-31 3周2次课
- 正则表达式
- spring cloud踩坑日志(5)- ribbon的简单应用