二叉搜索树的后序遍历序列Java
来源:互联网 发布:淘宝女装店知乎推荐 编辑:程序博客网 时间:2024/06/03 12:29
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true, 否则返回false。假设输入的数组的任意两个数字都互不相同。
思路:在后序遍历得到的序列中,最后一个数字是树的根结点的值。数组中前面的数字可以分为两部分:第一部分是左子树根结点的值,它们都比 根结点的值小;第二部分是右子树根结点的值,它们都比根结点的值大。
package offer;public class VerifySequenceOfBST {public static void main(String[] args) {int[]seq = {5,7,6,9,11,10,8};int[] seq2 = {7,4,6,5};System.out.println(verifySequenceOfBST(seq));}public static boolean verifySequenceOfBST(int[] seq){if(seq==null || seq.length==0)return false;return verifySequenceOfBST(seq,0,seq.length-1);}private static boolean verifySequenceOfBST(int[] seq, int start, int end){ if(start>end)return true;int root = seq[end];int i=start;while(i<=end-1){if(seq[i]>root)break;i++;}int j=i;while(j<=end-1){if(seq[j]<root)return false;j++;}boolean left = true;left = verifySequenceOfBST(seq,start,i-1);boolean right = true;right = verifySequenceOfBST(seq,i,end-1);return left&right;}}
如果要求处理一棵二叉树的遍历序列,我们可以先找到二叉树的根结点,再基于根结点把整棵树的遍历序列拆分成左子树对应的子序列和右子树对应的子序列,接下来再递归地处理这两个子序列。
0 0
- java之二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列Java
- 二叉搜索树的后序遍历序列java实现
- 二叉树------二叉搜索树的后序遍历序列
- 【树5】二叉搜索树的后序遍历序列
- 题目10:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 1367:二叉搜索树的后序遍历序列 @jobdu
- 二叉搜索树的后序遍历序列
- Q24:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- (转载)快速对图像的像素进行操作 opencv 实战
- android屏幕自适应&&android 属性
- s设置cookie的简单方法
- 检测手机类型、密度比和物理宽高
- TCP和UDP的区别(转)
- 二叉搜索树的后序遍历序列Java
- iOS 强引用(__strong)和弱引用(__weak)浅析
- Hadoop-格式化HDFS报错java.net.UnknownHostException: localhost.localdomain: localhost.localdomain
- CSS 内使用 JavaScript
- Java_派生类的3中继承方式
- c++程序设计笔记(5)
- windows 登录 Linux 服务器
- Redis入门很简单之三【常见参数配置】
- Logback浅析