zoukankan      html  css  js  c++  java
  • 剑指offer---2、二叉搜索树的后序遍历序列

    剑指offer---2、二叉搜索树的后序遍历序列

    一、总结

    一句话总结:

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
    认真看题:注意题目中是二叉搜索树,二叉搜索树就有二叉搜索树的那些规律

    1、二叉搜索树的后序遍历序列 的解题思路是什么?

    BST的后序序列的合法序列是,对于一个序列S,最后一个元素是x (也就是根),如果去掉最后一个元素的序列为T,那么T满足:T可以分成两段,前一段(左子树)小于x,后一段(右子树)大于x,且这两段(子树)都是合法的后序序列。完美的递归定义 : ) 。

    2、二叉树的问题的注意事项是什么?

    递归:一般是 递归 来做
    增一个函数:一般要重新写一个函数来做递归

    二、内容在总结中

    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。

    参考代码:java

    class Solution {
        bool judge(vector<int>& a, int l, int r){
            //只有一个元素的时候
            if(l >= r) return true;
            //找右子树
            int i = r;
            while(i > l && a[i - 1] > a[r]) --i;
            //判断左子树
            for(int j = i - 1; j >= l; --j) if(a[j] > a[r]) return false;
            //分别判断左右子树
            return judge(a, l, i - 1) && (judge(a, i, r - 1));
        }
    public:
        bool VerifySquenceOfBST(vector<int> a) {
            if(!a.size()) return false;
            return judge(a, 0, a.size() - 1);
        }
    };
     
  • 相关阅读:
    CF519E
    Visual Studio 2017更新内容记录
    MSSQL导入数据时,出现“无法截断表 因为表正由Foreign key引用”错误
    使用NeatUpload控件实现ASP.NET大文件上传
    jquery 图片无缝切换
    less 能加快css编写?
    jquery 分页控件(二)
    jquery 分页控件(一)
    jquery仿天猫商城左侧导航菜单
    jquery 图片放大
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/10999462.html
Copyright © 2011-2022 走看看