• 剑指offer——二叉搜索树的后序遍历序列


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

    思路:首先二叉搜索树是指左子树全部小于根节点,右子树全部大于根节点的树。故:

    对于一棵树:
    首先找到右子树的第一个节点,然后判断右子树中是否有小于根节点的节点,若有,则输出false。

     1 public class Solution {
     2     public boolean VerifySquenceOfBST(int [] sequence) {
     3         if (sequence.length == 0)//空树
     4             return false;
     5         if (sequence.length == 1)//单个节点树
     6             return true;
     7         return judge(sequence, 0, sequence.length-1);
     8     }
     9     public boolean judge(int[] a, int star, int end){
    10         if(star>=end){//迭代终止
    11             return true;
    12         }
    13         int i = star;
    14         while(a[i]<a[end]){//左子树
    15             i++;
    16         }
    17         for(int j = i;j<end;j++){//右子树
    18             if(a[j]<a[end])
    19                 return false;
    20         }
    21         return(judge(a, star, i-1)&&judge(a, i,end-1));//对左子树和右子树进行判断
    22     }
    23 }
  • 相关阅读:
    RabbitMQ
    Java 多线程
    Java 多线程
    Java 多线程
    Java 多线程
    Springboot
    SpringBoot
    SpringCloud Config
    Financial
    Hystrix
  • 原文地址:https://www.cnblogs.com/10081-AA/p/10807706.html
Copyright © 2020-2023  润新知