剑指offer(23)—二叉搜索树的后序遍历序列
来源:互联网 发布:ssh建立连接的端口号 编辑:程序博客网 时间:2024/06/05 12:49
二叉搜索树的后序遍历序列
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思路
二叉搜索树:左<根<右
首先数组的最后一个元素为树的根节点,从前向后一次找最后一个小于根节点的元素即为左子树的根节点,从而可以确定左子树的后序遍历序列,再继续遍历,若遇到小于根节点的值则返回false,否则递归判断左右子树
代码
class Solution {public: bool VerifySquenceOfBST(vector<int> sequence, int begin, int end){ int root = sequence[end]; int left = begin; while(left < end){ //找到连续大于root的最后一个元素位置left if(sequence[left] > root) break; left++; } int right = left; while(right < end){ //若left~end之间有小于root,则返回false if(sequence[right] < root) return false; right++; } bool l = true; if(left-1 > begin) //左子树存在则判断左子树 l = VerifySquenceOfBST(sequence, begin, left-1); bool r = true; if(left < end-1) //右子树存在则判断右子树 r = VerifySquenceOfBST(sequence, left, end-1); return (l && r); } bool VerifySquenceOfBST(vector<int> sequence) { int nLength = sequence.size(); if(nLength <= 0) return false; return VerifySquenceOfBST(sequence, 0, nLength-1); }};
阅读全文
0 0
- 剑指offer:二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指Offer-->二叉搜索树的后序遍历序列
- 《剑指offer》二叉搜索树的后序遍历序列
- 【剑指Offer】二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指 offer:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列||剑指offer
- 剑指offer-二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- [剑指offer]二叉搜索树的后序遍历序列
- 《剑指offer》-二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- linux学习笔记(10)
- html表单基础
- spring声明式事务源码剖析(中)
- 解决IE浏览器下document click事件失效问题
- Java NIO系列教程(6):Selector
- 剑指offer(23)—二叉搜索树的后序遍历序列
- 【学习笔记】jQuery的实现原理
- Unity 使用 Runtime NavMesh(运行时导航),实现AI在场景变化时,重新计算路线
- POJ1273-Drainage Ditches
- 一个想法照进现实-《IT连》创业项目:聊聊最近两三事
- 对于ORACLE RAC集群修改MAX_STRING_SIZE的方法(varchar2字段扩展到32K)
- cocos-js,Widget的addTouchEventListener改善
- 10个有关RESTful API良好设计的最佳实践
- 升级Glibc2.14的坑爹记录