zoukankan      html  css  js  c++  java
  • 剑指 Offer 33. 二叉搜索树的后序遍历序列

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

    Difficulty: 中等

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

    参考以下这颗二叉搜索树:

         5
        / 
       2   6
      / 
     1   3
    

    示例 1:

    输入: [1,6,3,2,5]
    输出: false
    

    示例 2:

    输入: [1,3,2,6,5]
    输出: true
    

    提示:

    1. 数组长度 <= 1000

    Solution

    思路:判断根结点的左右子树是否满足二叉搜索树的特性,然后递归的判断左右子树是否同样满足。

    Language: java

    ​class Solution {
        public boolean verifyPostorder(int[] postorder) {
            return helper(postorder, 0, postorder.length-1);
        }
        private boolean helper(int[] postorder, int s, int e){
            if(s >= e) return true;
            int i = s;
            while(i < e && postorder[i] < postorder[e]) i++;
            int ii = e;
            while(ii > i && postorder[ii-1] >= postorder[e]) ii--;
            if(i != ii) return false;  //左子树不满足比根结点小,或右子树不满足比根结点小
            return helper(postorder, s, i-1) && helper(postorder, i, e-1);
        }
    }
    
  • 相关阅读:
    查看集群基本情况
    Linux的awk命令详解
    wget命令详解
    ES集群操作原理
    Linux常见的Shell命令
    影响ES相关度算分的因素
    Hive三种建表语句详解
    大数据常用组件端口号
    Hadoop Shell命令
    Zookeeper搭建
  • 原文地址:https://www.cnblogs.com/liuyongyu/p/14452181.html
Copyright © 2011-2022 走看看