剑指offer 面试题24 二叉搜索树的后序遍历序列
来源:互联网 发布:淘宝旺铺助手 编辑:程序博客网 时间:2024/05/18 09:41
剑指offer 面试题24 二叉搜索树的后序遍历序列
题目:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。
如果是则返回 true,否则返回 false。
假设输入的数组的任意两个数字都互不相同。
package algorithm.foroffer.top30;/** * Created by liyazhou on 2017/5/28. * 面试题24:二叉搜索树的后序遍历序列 * * 题目: * 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 * 如果是则返回 true,否则返回 false。 * 假设输入的数组的任意两个数字都互不相同。 * * 问题: * 1. 二叉搜索树的性质 * 2. 二叉树的后序遍历结果的特点 * 3. 递归 * * 思路: * 1. 二叉搜索树的性质,根结点比左孩子大,根结点比右孩子小 * 2. 二叉树的后序遍历结果,最后的一个结点总是根结点 * 3. 以最后一个元素作为分割点,将后序遍历结果分为两部分,其左子树和右子树的后序遍历结果 * 判断每一个棵子树的是否满足条件,根结点比左孩子大,根结点比右孩子小 * */public class Test24 { public static boolean vertifySeqOfBST(int[] postorder, int start, int end){ // System.out.println(String.format("start, end = %d, %d", start, end)); // 应该在传入参数之前判断,免得每次递归都得进行判断 if (postorder == null) return false; int split; for (split = start; split < end - 1; split++){ // 最后一个元素是根结点,不判断 if (postorder[split] > postorder[end-1]) break; } // 递归终止条件 // 如果根结点比其右孩子大,则返回 false for (int i = split; i < end; i++) if (postorder[i] < postorder[end - 1]) return false; boolean left = true; // 有条件的递归,其递归终止条件是 split <= start if (split > start) // 该区间的元素大于或者等于 2 个 left = vertifySeqOfBST(postorder, start, split); boolean right = true; // 有条件的递归,其递归终止条件是 split >= end-1 if (split < end-1) // 该区间的元素大于或者等于 2 个 right = vertifySeqOfBST(postorder, split, end-1); // 最后一个元素是根结点,不进入下一轮 return (left && right); } public static void main(String[] args){ int[][] seqs = { {5, 7, 6, 9, 11, 10, 8}, {5, 7, 6, 9, 11, 5, 8} }; for (int i = 0; i < seqs.length; i++) System.out.println(Test24.vertifySeqOfBST(seqs[i], 0, seqs[i].length)); }}
阅读全文
1 0
- [剑指offer][面试题24]二叉搜索树的后序遍历序列
- 【剑指offer】面试题24:二叉搜索树的后序遍历序列
- 剑指Offer:面试题24 二叉搜索树的后序遍历序列
- 《剑指Offer》面试题24:二叉搜索树的后序遍历序列
- 剑指offer 面试题24—二叉搜索树的后序遍历序列
- 剑指offer--面试题24:二叉搜索树的后序遍历序列--Java实现
- 【剑指Offer学习】【面试题24:二叉搜索树的后序遍历序列】
- 剑指Offer面试题24(Java版):二叉搜索树的后序遍历序列
- 剑指offer面试题24-二叉搜索树的后序遍历序列
- 剑指offer-面试题24:二叉搜索树的后序遍历序列
- 剑指offer之面试题24:二叉搜索树的后序遍历序列
- 剑指Offer----面试题24:二叉搜索树的后序遍历序列
- 剑指offer-面试题24:二叉搜索树的后序遍历序列
- 剑指offer面试题24:二叉搜索树的后序遍历序列
- 剑指offer面试题24:二叉搜索树的后序遍历序列
- 剑指offer--面试题24: 二叉搜索树的后序遍历序列
- 剑指offer——面试题24:二叉搜索树的后序遍历序列
- 剑指Offer之面试题24:二叉搜索树的后序遍历序列
- deepin--解决屏幕撕裂问题
- Java九九乘法表
- java学习笔记——反射
- Android中View的相关知识(3)
- Magento 2中文手册教程
- 剑指offer 面试题24 二叉搜索树的后序遍历序列
- XML约束
- Magento 2中文手册教程
- weka之调用特征选择
- Android中checkbox全选功能的简单实现
- Codefoces-811A Vladik and Courtesy [模拟]
- Magento 2中文手册教程
- FragmentDialog横屏全屏
- PhotoShop cc 2017安装 zeplin插件