判断整数序列是否为 BST的后序遍历结果
2012-12-26 11:15
246 查看
据说是网易有道二面,直接上代码吧。
/* * 文 件 名: Problem9.java * 修改时间: 2012-12-7 */ package problem; /** * 判断整数序列是不是二叉树的后序遍历结果 * @version [版本号, 2012-12-7] * @see [相关类/方法] * @since [产品/模块版本] */ public class Problem9 { /** 主函数 * @param args * @see [类、类#方法、类#成员] */ public static void main(String[] args) { int[] array = {6, 9, 8, 12, 20, 15}; System.out.println(isAfterResult(array, 0, array.length - 1)); } /** * 判断一个整数数组是不是二叉树的后序遍历结果,使用递归算法 * @param array * @return * @see [类、类#方法、类#成员] */ private static boolean isAfterResult(int[] array, int start, int stop) { //先判断数组不可为空 if (null == array) { throw new NullPointerException(); } //先判断start和stop是否越界 if (start < 0 || start > array.length || stop < 0 || stop > array.length || start > stop) { throw new ArrayIndexOutOfBoundsException(); } int count = stop - start + 1; if (count < 3) { return true; } else if (count == 3) { //这里做判断 if (array[stop] >= array[start] && array[stop] <= array[start + 1]) { return true; } else { return false; } } else { //这里做切割,找到第一个比stop大或等的索引 int index = -1; for (int i = start; i < stop; i++) { if (array[i] >= array[stop]) { index = i; break; } } if (index == -1 || index == 0) { return isAfterResult(array, start, stop - 1); } else { return isAfterResult(array, start, index - 1) && isAfterResult(array, index, stop - 1); } } } }
相关文章推荐
- Interview----判断整数序列是否是二叉搜索树的后序遍历结果
- Interview----判断整数序列是否是二叉搜索树的后序遍历结果
- 判断整数序列是否为二叉查找树的后序遍历结果
- 判断整数序列是不是二叉查找树(BST)的后序遍历结果
- flag5判断整数序列是不是二元查找树的后序遍历结果
- 判断给定的序列是否是一棵BST的后序遍历序列
- 判断整数序列是不是二叉查找树(BST)的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断一个数据序列是否是BST后序遍历的结果
- 判断整数序列是不是二叉排序树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 程序员面试题100题第6题——判断整数序列是不是二元查找树的后序遍历结果
- 剑指Offer 1367 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 判断整数序列是否是二叉查找树的后序遍历
- 二叉树系列7:判断整数序列是不是二叉搜索树的后序遍历结果
- 判断整数序列是不是二元查找树的后序遍历结果
- 数据结构面试题1.2.8-判断整数序列是不是二元查找树的后序遍历结果
- 9.判断整数序列是不是二元查找树的后序遍历结果