剑指offer-二叉搜索树的后序遍历序列
来源:互联网 发布:数据库unique 编辑:程序博客网 时间:2024/04/30 22:20
一、问题描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
二、思路
二叉树题目用递归做是没有悬念的,本题亦是如此。首先递归函数的退出条件是start>=end,返回真;其次第一个循环找到左右子树的分界点i - 1,i - 1前是左子树,i- 1后是右子树;第二个循环中如果左子树的值比根节点大,那么返回假,最后递归返回左右子树的查找结果,同时为真才表明是二叉搜索树的后续遍历,如果有其中一个为假,则不是后续遍历。
三、代码
class Solution {public: bool verifyBST(vector<int> &array, int start ,int end){ if(start >= end) return true; int i = end; while(i > start && array[i - 1] > array[end]) --i; for(int j = i - 1; j >= start; --j) if(array[j] > array[end]) return false; return verifyBST(array, start, i - 1) && (verifyBST(array, i, end - 1)); } bool VerifySquenceOfBST(vector<int> sequence) { if(!sequence.size()) return false; return verifyBST(sequence, 0, sequence.size() - 1); }};
0 0
- 剑指offer:二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指Offer-->二叉搜索树的后序遍历序列
- 《剑指offer》二叉搜索树的后序遍历序列
- 【剑指Offer】二叉搜索树的后序遍历序列
- 剑指offer--二叉搜索树的后序遍历序列
- 剑指 offer:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列||剑指offer
- 剑指offer-二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 剑指offer 二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- [剑指offer]二叉搜索树的后序遍历序列
- 《剑指offer》-二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- View框架之measure()流程
- 使用树莓派(raspberry pi)搭建网站(nginx+php+mysql+ddclient)
- 287. Find the Duplicate Number
- 在树莓派上搭建LAMP(Linux Apache Mysql PHP)服务器
- 网狐_经典版机器人添加说明
- 剑指offer-二叉搜索树的后序遍历序列
- Golden Dream-11月
- HDU-5952 Counting Cliques(16年ICPC沈阳赛区)(暴力DFS)
- iOS 导航栏标题文字颜色渐变
- HDU-1301-Jungle Roads
- Build OpenCV 3.1 from source files on Windows
- python数据类型详解
- HDU 1106 排序(简单分类模拟)
- LeetCode 100. Same Tree