面试题24. 二叉搜索树的后序遍历序列
来源:互联网 发布:yy辅助软件 编辑:程序博客网 时间:2024/06/15 06:48
题目描述
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思路:
本题的考点是递归,由于数组表示的是二叉树的后续遍历,最后一个数字就是根节点的值。二叉搜索树的特点是,左子树节点的值 < 根节点的值 < 右子树节点的值。根据这个特点可以将数组划分成两部分,一部分是左子树,它们的值都大小于根节点,另一部分是右子树,它们的值都大于根节点。然后使用同样的方法分析左子树和右子树,是一个递归的过程。
Java 代码:
public class Solution { public boolean VerifySquenceOfBST(int[] s) { if(s.length == 0) return false; return check(s, 0, s.length-1); } public boolean check(int[] a, int l, int r) { if(l >= r) return true; int x = a[r]; int r1 = l; while(a[r1] < x) r1++; int l1 = r1; int i = l1; while(i < r) { if(a[i] < x) return false; i++; } return check(a, l, r1 - 1) && check(a, l1, r - 1); }}
Python 代码:
# -*- coding:utf-8 -*-class Solution: def VerifySquenceOfBST(self, sequence): if not sequence: return False return self.check(sequence, 0, len(sequence) - 1) def check(self, sequence, left, right): if left >= right: return True r = left while sequence[r] < sequence[right]: r += 1 i = l = r while i < right: if sequence[i] < sequence[right]: return False i += 1 return self.check(sequence, left, r - 1) and self.check(sequence, l, right - 1)
相关题目:
1、输入一个整数数组,判断该数组是不是BST的前序遍历结果。
阅读全文
0 0
- 剑指offer-面试题24.二叉搜索树的后序遍历序列
- 面试题24. 二叉搜索树的后序遍历序列
- 面试题22:二叉搜索树的后序遍历序列
- [剑指offer][面试题24]二叉搜索树的后序遍历序列
- 【面试题二十四】二叉搜索树的后序遍历序列
- 面试题24:二叉搜索树的后序遍历序列
- 面试题整理7 二叉搜索树的后序遍历序列
- 【剑指offer】面试题24:二叉搜索树的后序遍历序列
- 剑指Offer:面试题24 二叉搜索树的后序遍历序列
- 面试题24:二叉搜索树的后序遍历序列
- 《剑指Offer》面试题24:二叉搜索树的后序遍历序列
- 剑指offer 面试题24—二叉搜索树的后序遍历序列
- 面试题24:二叉搜索树的后序遍历序列
- 面试题24二叉搜索树的后序遍历序列
- 剑指offer--面试题24:二叉搜索树的后序遍历序列--Java实现
- 【剑指Offer学习】【面试题24:二叉搜索树的后序遍历序列】
- 面试题24_二叉搜索树的后序遍历序列
- 【剑指Offer面试题】 九度OJ1367:二叉搜索树的后序遍历序列
- Hdu4405
- python访问redis
- 两个表不能连接查询需要把数据放在一起
- java终止线程的三种方法
- Android校招面试 —— Java篇
- 面试题24. 二叉搜索树的后序遍历序列
- 欢迎使用CSDN-markdown编辑器
- Maven插件编译异常
- 海欢服务器环境安装手册
- 初识 weex(前端视角)
- codeforces 587F. Duff is Mad
- 【VS开发】MFC CListCtrl列表控件的消息响应
- 变分自编码(VAE)及代码解读
- gmplayer启动报错: Option equ_channel_1 needs a parameter at line 11