二叉查找树的后续遍历序列验证
来源:互联网 发布:mysql数据库语句大全 编辑:程序博客网 时间:2024/05/29 02:14
问题:验证一个给定的序列是否可能是某一棵二叉查找树的后续遍历序列。如果是则返回1,否则返回0。假设输入的数组的任意元素都不相同;
代码如下:仅供参考。
#include <iostream>#define TRUE 1#define FALSE 0using namespace std;//data [stat,end]//验证data中的元素是否为某棵二叉查找树的后续遍历bool IsFindTreePostOrder(int *data,int start,int end){if(!data) return TRUE;if (start>=end) return TRUE;int root=*(data+end);//最后一个元素是根元素int i,j;for (i=end;i>start&&*(data+i-1)>root;i--);//[end-1,i] 右子树应该包含的元素for(j=i;j>start&&*(data+j-1)<root;j--);//[i-1,j] 左子树应该包含的元素 另外如果j==stat 说明以root为根成功的将所有元素分为左右子树if(j>start) //以root为根未能将所有元素分为左右子树,故不可能是某棵二叉查找树的后续遍历return FALSE;return IsFindTreePostOrder(data,i,end-1)&&//验证data右子树是否为某棵二叉查找树的后续遍历IsFindTreePostOrder(data,j,i-1);//验证data左子树是否为某棵二叉查找树的后续遍历}int main(){int data[]={7,4,5,6};cout<<IsFindTreePostOrder(data,0,3)<<endl;}
- 二叉查找树的后续遍历序列验证
- 二叉搜索树的后续遍历序列
- 二叉树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 判断二叉树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 搜索二叉树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 二叉搜索树的后续遍历序列
- 判断序列是否是二叉查找树的后续遍历结果
- 判断整数序列是不是二元查找树的后续遍历
- 判断二叉搜索树的后续遍历序列
- [剑指Offer]二叉搜索树的后续遍历序列
- 剑指Offer之 - 二叉搜索树的后续遍历序列
- 面试题24:二叉搜索树的后续遍历序列
- 剑指Offer--二叉搜索树的后续遍历序列
- win7+64位+Oracle+11g+64位下使用PLSQL+Developer+的解决办法
- Socket 10054
- 数据类型和取值范围 作者:雨若
- 介绍 JSON
- C语言数据类型
- 二叉查找树的后续遍历序列验证
- UVALive 4015 Caves
- Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds
- Android开发:界面布局的基本使用
- grid 里面添加控件
- 系统设计说明书(架构、概要、详细)目录结构
- Facebook面试Q&A
- 如何查看mysql版本的四种方法
- Win7安装telnet