二叉搜索树的后序遍历序列
来源:互联网 发布:亚马逊数据怎么分析 编辑:程序博客网 时间:2024/06/05 15:18
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
编程思路
在后序遍历得到的序列中,最后一个数字是树的根节点的值,数组中前面的数字可以分为两部分,第一部分是左子树结点的值,他们都比根节点的值小,第二部分是右子树结点的值,他们都比根节点的值大。因此,对于给定数组,先找到最后一个数作为根节点,然后从前往后按照与最后一个数比较大小看是否可以将数组分为左右子树两部分,若可以,则对左右子树递归使用这样的方法,若不可以,则该数组就不是后序遍历的结果。
程序代码(Java语言)
public class Solution { public boolean VerifySquenceOfBST(int[] sequence) { if(sequence == null || sequence.length <= 0) return false; return VerifySquenceOfBST(sequence,0,sequence.length-1); } public boolean VerifySquenceOfBST(int[] seq,int start,int end) { if(start > end) return true; int root = seq[end]; //在二叉搜索树中左子树的结点小于根节点 int i = start; while(i < end) { if(seq[i] > root) break; i++; } //右子树的结点大于根节点 int j=i; while(j < end) { if(seq[j] < root) return false; j++; }
//判断左子树是不是二叉搜索树 boolean left = true; if(i > 0) { left = VerifySquenceOfBST(seq,start,i-1); }
//判断右子树是不是二叉搜索树 boolean right = true; if(i<end) right = VerifySquenceOfBST(seq,i,end-1); return(left && right); }}
阅读全文
0 0
- 二叉树------二叉搜索树的后序遍历序列
- 【树5】二叉搜索树的后序遍历序列
- 题目10:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 1367:二叉搜索树的后序遍历序列 @jobdu
- 二叉搜索树的后序遍历序列
- Q24:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- UE4配置Andrid时识别不出安卓设备的解决方法
- 前端js校验 自己编的校验工具
- 大数据可视化第三天——D3.js初探:饼形图
- MATLAB 2015B 破解版安装详细教程
- leetcode 328. Odd Even Linked List
- 二叉搜索树的后序遍历序列
- Linux笔记
- VGA、QVGA、CIF、SXGA等视频格式尺寸
- 【C语言】C语言实现静态通讯录
- c++中函数重载的实现原理
- Jenkins启动
- Mac开发之项目中图片管理
- 【python】 python2.7.5 安装pip
- XYOJ 1007 连续多数求和