二叉搜索树后序序列
来源:互联网 发布:魔兽淘宝代练等级 编辑:程序博客网 时间:2024/06/16 22:18
1.题意
1.题意
给定一个序列,判断此序列是否是一个二叉搜索树的后续遍历序列
- 二叉搜索树:左子树都比根节点小,右子树都比根节点大
2.分析
后序遍历序列,最后一个是根节点
比根节点小的的是左子树部分,可以无左子树
剩下的是右子树部分,必须比根节点大,可以无右子树
递归检查序列的每段,直到检查段长度为1(到叶子节点)
3.代码
bool isOrderBST(int* a, int length){ if(a==NULL || length<=0) return false; int root = a[length-1]; int leftEnd = 0; while(leftEnd<length-1 && a[leftEnd]<root) leftEnd++; //此时leftEnd等于左子树长度,a[leftEnd]指向右子树第一个 for(int i=leftEnd; i<length-1; i++) { if(a[i] < root) return false;//右子树小于根节点,不符合BST定义 } bool left = true; if(leftEnd > 0)//有左子树 left = isOrderBST(a, leftEnd); if(left == false) return false;//左边不符合,没必要接着判断右边,剪枝 bool right = true; if(leftEnd < length - 1)//有右子树 right = isOrderBST(a+leftEnd, length-1-leftEnd); return right;}
0 0
- 二叉搜索树后序序列
- 二叉搜索树后序遍历序列判断
- 【剑指offer-Java版】24二叉搜索树后序遍历序列
- 二叉搜索树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 二叉搜索树的前序遍序序列 仿后序
- 二叉搜索树的后续遍历序列
- 搜索二叉树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 判断两序列是否为同一二叉搜索树序列
- 判断两序列是否为同一二叉搜索树序列
- 二叉树------二叉搜索树的后序遍历序列
- 二叉搜索树的后序遍历序列序列判断是否是二叉搜索树
- 前序加中序求二叉树后序序列
- 基于visual Studio2013解决面试题之0208二叉搜索树后序遍历序列
- Gradle--使用gradle构建Android项目的基础知识
- 转载:c++虚函数的作用
- Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现
- jenkins error:java.io.IOException: Failed to create a directory at ...
- c# 集合类
- 二叉搜索树后序序列
- 添加事件,兼容浏览器
- 模拟垂直滚动条
- WEBSPHERE性能调优!
- git用.gitignore忽略指定文件
- Customizing Existing Classes
- 初识Curator - instance must be started before calling this method
- Android四大基本组件介绍与生命周期
- 【大型互联网企业架构分享】springmvc+mybatis+shiro+restful+webse