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

    题目:二叉搜索树的后序遍历序列

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

    思路:二叉搜索树首先是有序的,其后序遍历是“左右根”的顺序,根节点总是在后面

    如:

                                    6
                       /
                      3 9
                     /  /
                    1 5 8 10

    期后序遍历是:153 8109 6

    在跟节点已知后我们便可以找到左右子树的位置,然后判断当前根节点的右子树是否都大于根节点,然后对每个左右子树再进行上面的操作,递归进行判断,直至判断到最终的叶子节点处

    代码:

     1 public class Solution {
     2     public boolean VerifySquenceOfBST(int [] sequence) {
     3         if(sequence.length==0)return false;
     4         return isBST(sequence,0,sequence.length-1);
     5     }
     6     private boolean isBST(int[]a,int start,int end){
     7         if(start>=end)return true;
     8         int right=0;
     9        while(a[right]<a[end]){
    10            right++;
    11        }
    12         for(int j=right;j<end;j++){
    13             if(a[j]<a[end]) return false;
    14         }
    15       return isBST(a,start,right-1)&&isBST(a,right,end-1);  
    16     }
    17 }
  • 相关阅读:
    git 拉取开发代码
    android webview
    H5 元素定位
    Python中模块
    服务器1
    活动
    宝塔面板-阿里部署
    最新版Xshell、Xftp注册机NetSarang
    最新版Navicat Premium激活,附激活工具
    9月29更新美版T-mobile版本iPhone7代和7P有锁机卡贴解锁方法
  • 原文地址:https://www.cnblogs.com/pathjh/p/9173291.html
Copyright © 2011-2022 走看看