判断一个数据序列是否是BST后序遍历的结果
来源:互联网 发布:淘宝客服一直不回消息 编辑:程序博客网 时间:2024/06/14 01:52
基本知识:
1)BST:二叉排序树,即父节点大于左子节点,小于等于右子节点
2)后序遍历: 先遍历左子树,再遍历右子树,最后遍历根节点
基本思想:后续遍历得到的数组的最后一个元素为根节点,前一部分为左子树,后一部分为右子树
前一部分中的元素都小于root(根),后一部分中的元素都大于root(根)
所以可以先遍历前一部分,找到第一个大于等于root的节点i,然后判断此后的节点是否都大于root,如果不是就不是后序遍历的结果,
如果是,则递归调用。
本文参考如下博客: 博客1
package test;public class BinarySortedTree { private boolean isBST(int[] array,int start,int end){ int root = array[end]; //数组序列的最后一个元素为二叉排序树的根节点 int i = start; boolean lResult = true; boolean rResult = true; if(array == null) throw new NullPointerException(); if(end-start < 0) return false; //找到节点i,i-1为根节点的左孩子,i及其以后的节点为根节点的右孩子 for(;i < end;i++) if(array[i] > root) break; for(int j = i;j < end;j++){ if(array[j] < root) return false; } //递归调用左子树 if(i > start) lResult = isBST(array,start,i-1); //递归调用右子树 if(i < end) rResult = isBST(array,i,end-1); return (lResult&&rResult); }public static void main(String[] args) {// 7// 5 9// 4 3 8 10//后序遍历为:4 3 5 8 10 9 7int[] arrayBST = {4,3,5,8,10,9,7}; //是后序遍历的结果int [] arrayNotBST = {4,9,5,8,10,3,7}; //不是后序遍历的结果BinarySortedTree bst = new BinarySortedTree();System.out.println("序列arrayBST "+(bst.isBST(arrayBST, 0, arrayBST.length-1)==true?"是":"不是")+"后序遍历的结果");System.out.println("序列arrayNotBST "+(bst.isBST(arrayNotBST, 0, arrayNotBST.length-1)==true?"是":"不是")+"后序遍历的结果");}}
- 判断一个数据序列是否是BST后序遍历的结果
- 判断一个数字序列是BST后序遍历的结果
- 判断一个序列是否是一个二叉查找树的后序遍历结果
- Java 判断一个序列是否是搜索二叉树的后序遍历结果
- 判断整数序列是否为 BST的后序遍历结果
- 判断某个序列是否是二元查找树的后序遍历结果
- Interview----判断整数序列是否是二叉搜索树的后序遍历结果
- 树(4)判断某个序列是否是二叉查找树的后序遍历结果
- 判断给定的序列是否是一棵BST的后序遍历序列
- 判断整数序列是不是二叉查找树(BST)的后序遍历结果
- 判断整数序列是不是二叉查找树(BST)的后序遍历结果
- 【100题】判断一个序列是不是一个BST的后序遍历
- 剑指offer面试题24判断一个序列是否为BST的后序遍历序列附加输入递归的创建二叉树
- 【树】判断树是否为BST + 求BST的第k个结点 + 判断一个数组是否为BST的后序遍历
- 判断一个序列是否是二叉查找树的后序、前序、中序遍历序列
- 面试题精选(76):给定BST先序遍历序列,不构造BST的情况下判断BST是否每个node都只有一个child
- 判断一个数列是否是二叉树后序遍历的结果
- 判断整数序列是否为二叉查找树的后序遍历结果
- 一个简单的vb相册程序(女女过生日时送她)
- 网易有道面试题集锦
- ubuntu下添加环境变量
- oracle 递归查询例子
- poj 2184 Cow Exhibition
- 判断一个数据序列是否是BST后序遍历的结果
- C++之能力查询
- Android 调用相机、打开相册、裁剪图片
- SSH问题汇集
- 唯美
- Hibernate的三种状态及其update案例分析。
- 关于iframe自适应高度。
- oracle版本及字符集查询
- IT名企面试系列之腾讯笔试题