题目:输入一个整数数组,判断该数组是不是二叉搜索树的后序遍历序列的结果,如果是,则返回true,如果不是则返回false。假设输入的数组的任意两个数字都互不相同。

  分析:在后序遍历得到的序列中,最后一个数字是根节点的值。数组中前面的数字可以分为两个部分:第一部分是左子树节点的值,它们都比根节点的值小;第二部分是右子树节点的值,它们都比根节点的值大。所以我们首先在数组中从开头处遍历确定右子树第一个节点的位置,这就表明从这个位置一直到最后一个位置(根节点的位置)之前都是右子树。然后我们从刚才找到的右子树的第一个位置,遍历数组中的右子树部分。如果找到一个值小于根节点的值。那就不满足二叉搜索树右子树的值都比根节点的值大这一特性。然后一定要依照这种规则继续检查左右子树,比如{5,3,6,9,11,10,8}。

     这道题目是分治法思想的应用。

bool VerifySquenceofBST(int a[], int len) {
if (a == NULL || len <= )
return false; if (len == ) return true; int pos1 = a[len - ];
int pos1 = ;
while (a[pos1] < root_val)
pos1++; int pos2 = pos1;
for (; pos2 < len - ; ++pos2) {
if (a[pos2] < root_val)
return false;
} bool flag_left = true;
if (pos1 > )
flag_left = VerifySquenceofBST(a, pos1); bool flag_right = true;
if (pos1 < len - )
flag_right =VerifySquenceofBST(a + pos1, len - pos1 - ); return flag_left && flag_right;
}

二叉搜索树的后序遍历路径(《剑指offer》面试题24)的更多相关文章

  1. 剑指Offer面试题:22.二叉搜索树的后序遍历序列

    一.题目:二叉搜索树的后序遍历序列 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true,否则返回false.假设输入的数组的任意两个数字都互不相同. 例如在下面 ...

  2. 剑指Offer 二叉搜索树的后序遍历序列

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同.   思路: 后续遍历数组的尾部为根节点,前面的部分 ...

  3. 剑指Offer:面试题24——二叉搜索树的后序遍历序列(java实现)

    问题描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true,否则返回false.假设输入的数组的任意两个数字都互不相同. 思路: 1.首先后序遍历的结果是[(左子 ...

  4. (剑指Offer)面试题24:二叉搜索树的后序遍历序列

    题目: 输入一个整数数组,判断该数组是不是某个二叉搜索树的后序遍历的结果,如果是则返回true,否则返回false. 假设输入的数组的任意两个数字都互不相同. 思路: 根据二叉搜索树的后序遍历特点,很 ...

  5. 剑指Offer22 判断数组是否为某二叉搜索树的后序遍历

    /************************************************************************* > File Name: 22_Sequen ...

  6. P140、面试题24:二叉搜索树的后序遍历序列

    题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true,否则返回false.假设输入的数组的任意两个数字都互不相同. 测试用例: 1)功能测试(输入的后序遍历的序列 ...

  7. 剑指OFFER之从二叉搜索树的后序遍历序列(九度OJ1367)

    题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 输入: 每个测试案例包括2行: 第一行为1个整数 ...

  8. 【剑指offer】面试题24:二叉搜索树的后序遍历序列

    题目: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 思路: 递归 注意,主要就是假定数组为空时结果为fa ...

  9. 【剑指offer】二叉搜索树的后序遍历序列

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/26092725 剑指offer上的第24题,主要考察递归思想,九度OJ上AC. 题目描写叙述 ...

随机推荐

  1. pg_stat_statements

    Functions pg_stat_statements_reset() returns void pg_stat_statements_reset discards all statistics g ...

  2. C++之路进阶——bzoj1823(满汉全席)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  hyxzc Logout 捐赠本站 Notice:由于本OJ建立在 ...

  3. bzoj1834 [ZJOI2010]network 网络扩容

    第一问跑最大流,第二问新建一条边连接0和1,流量为上第一问的答案+k,费用为0,接下来图中每条边拆成两条边,第一条容量为C费用为0,第二条容量无穷费用为W,再跑一遍费用流即可. 代码 #include ...

  4. C# 多线程 lock 实例

    class Program { static void Main(string[] args) { //在t1线程中调用LockMe,并将deadlock设为true(将出现死锁) int i = 1 ...

  5. logstash的性能测试

    logstash有简单的批量生成插件.generator.详情见官网:https://www.elastic.co/guide/en/logstash/current/plugins-inputs-g ...

  6. ssh & display

    在Windows下用ssh连接服务器的话putty是一个小巧而且实用的工具,如果想要图形界面,可以使用X工具配合putty. 或者直接使用xmanager enterprise,非 常方便. 如果在U ...

  7. 给Debian安装Xfce桌面

    1.sudo apt-get install xorg xdm xfce4   2.vi ~/.xinitrc,然后输入:exec xfce4,在终端输入startx命令后就能进入xfce4,或直接在 ...

  8. 有关OpenGL着色语言(一)

    刚接触OpenGL着色语言...,不定期增加内容 1.OpenGL着色语言(GLSL)是什么? 用于OpenGL的面向过程的高级着色语言,是近年来图形编程领域中出现的最重要的新型开发技术,使用Open ...

  9. android 开发工具(android studio)

      Android Studio 从安装到配置使用 okhttp比xutils功能强大,源码地址: https://github.com/search?utf8=✓&q=okhttp andr ...

  10. E2PROM与Flash的引脚图

    E2PROM(24C02):