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 }
  • 相关阅读:
    Mysq数据库备份(win)
    Mysql保存中文乱码问题
    MySql常用操作
    win下 mysql远程连接设置
    windows下redis的使用
    栈和队列
    ffmpeg 常用命令
    nginx https配置模板
    openssl 、nginx生成配置自签名证书
    https、公钥,私钥,数字证书
  • 原文地址:https://www.cnblogs.com/pathjh/p/9173291.html
Copyright © 2011-2022 走看看