博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【九度OJ1367】|【剑指offer24】二叉搜索树的后序遍历序列
阅读量:6261 次
发布时间:2019-06-22

本文共 1898 字,大约阅读时间需要 6 分钟。

hot3.png

题目描述:

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

输入:

每个测试案例包括2行:

第一行为1个整数n(1<=n<=10000),表示数组的长度。

第二行包含n个整数,表示这个数组,数组中的数的范围是[0,100000000]。

输出:

对应每个测试案例,如果输入数组是某二叉搜索树的后序遍历的结果输出Yes,否则输出No。

样例输入:
75 7 6 9 11 10 847 4 6 5
样例输出:
YesNo

解:二叉查找树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为。

    后序遍历则最后一个元素为根元素

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.StreamTokenizer; public class Main {     public static boolean isBST(int[] array, int begin, int end) {        int left = begin;        int right = end - 1;        if(end - begin <= 1)            return true;        while (left < end && array[end] > array[left])            left++;        while (right > begin && array[end] < array[right])            right--;        if(left - 1 == right || left == right)            return isBST(array, begin, left - 1) && isBST(array, left, end - 1);        else            return false;    }     public static void main(String[] args) throws IOException {        StreamTokenizer st = new StreamTokenizer(new BufferedReader(                new InputStreamReader(System.in)));        while (st.nextToken() != StreamTokenizer.TT_EOF) {            int n = (int) st.nval;            int[] a = new int[n];            for (int i = 0; i < n; i++) {                st.nextToken();                a[i] = (int) st.nval;            }            if (Main.isBST(a, 0, n - 1))                System.out.println("Yes");            else                System.out.println("No");        }    } } /**************************************************************    Problem: 1367    User: aqia358    Language: Java    Result: Accepted    Time:370 ms    Memory:24264 kb****************************************************************/

转载于:https://my.oschina.net/u/1182234/blog/181003

你可能感兴趣的文章
requests库入门05-参数类型
查看>>
go语言 windows 32位编译环境搭建
查看>>
我的家庭私有云计划-20
查看>>
手把手教你封装属于自己的Windows7安装镜像
查看>>
《作业指导书》的发布管理问题与解决办法
查看>>
55.Azure内容分发网络(CDN)
查看>>
MySQL常见错误代码(error code)及代码说明
查看>>
微软MVP社区巡讲
查看>>
总结一下,MariaDB 10(MySQL5.6企业版分支)的主要新特性
查看>>
MS UC 2013-0-虚拟机-标准化-部署-2-模板机-制作-3-安装-Tool
查看>>
IDS与IPS的区别
查看>>
初试Windows 8 RTM
查看>>
Linux 下rpm包搭建LAMP环境
查看>>
Windows Server 2016-Nano Server介绍
查看>>
未来架构师的平台战略范例(4)_大数据
查看>>
Grizzly学习笔记(二)
查看>>
思科路由器动态VTI IPSec***配置
查看>>
***S启动时遇到1053错误
查看>>
CentOS7.5 使用 kubeadm 安装配置 Kubernetes1.12(四)
查看>>
shell脚本实现对系统的自动分区
查看>>