二叉搜索树的后序遍历序列
来源:互联网 发布:java jdbc连接oracle 编辑:程序博客网 时间:2024/06/05 20:49
二叉搜索树的后序遍历序列
知识点
二叉搜索树的定义:
- 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值
- 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值
- 它的左、右子树也分别为二叉搜索树
例子:
如图所示二叉树:
题目
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
思想
抓住二叉搜索树的性质,根节点比左节点大,比右节点小,再结合后序遍历的性质,利用递归实现
代码
public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence == null) return false; if(sequence.length <= 0) return false; if(sequence.length == 1) return true; int root = sequence[sequence.length -1]; int index = sequence.length -1; for(int i = 0; i < sequence.length; i++) { if(sequence[i] > root) { index = i; break; } } /*左子树*/ if(index != 0){ int[] left = new int[index]; for(int i = 0; i < index; i++) { if(sequence[i] >= root) return false; } for(int i = 0; i < index; i++) { left[i] = sequence[i]; } if(!VerifySquenceOfBST(left)) return false; } /*右子树*/ if(index != (sequence.length - 1)) { for(int i = index + 1; i < sequence.length - 1; i++) { if(sequence[i] <= root) return false; } int j = 0; int[] right = new int[sequence.length - index -1]; for(int i = index; i < sequence.length - 1; i++) { right[j++] = sequence[i]; } if(!VerifySquenceOfBST(right)) return false; } return true; }}
阅读全文
0 0
- 二叉树------二叉搜索树的后序遍历序列
- 【树5】二叉搜索树的后序遍历序列
- 题目10:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 1367:二叉搜索树的后序遍历序列 @jobdu
- 二叉搜索树的后序遍历序列
- Q24:二叉搜索树的后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 【剑指offer】二叉搜索树的后序遍历序列
- 题目1367:二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列
- SpringBoot整合Mybatis(分层整合)
- spring boot 2
- hdu 1247 字典树
- Spring Cloud-简介
- 数组array和集合的区别:
- 二叉搜索树的后序遍历序列
- CSDN 记录新的开始 20170720
- 数码时钟
- 复杂链表的复制
- 关于group by后 count(*) 某一组 指定条件下,记录为0,而返回结果不显示的解决办法
- Charles抓包
- python+freetype+opencv 图片中文(汉字)显示 详细图文教程和项目完整源代码
- MVC设计思想---Javaweb
- PAT (Advanced Level) Practise 1027 Colors in Mars (20)