zoukankan      html  css  js  c++  java
  • 剑指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 }
  • 相关阅读:
    第一个爬虫和测试
    乒乓球比赛模拟分析
    appium入门
    node安装
    自动化测试---selenium
    自动化测试---元素定位
    Shell脚本
    Shell脚本的编写
    Linux安装jdk,mysql,tomcat
    Linux的简单使用
  • 原文地址:https://www.cnblogs.com/10081-AA/p/10807706.html
Copyright © 2011-2022 走看看