二叉搜索树后序遍历序列判断
来源:互联网 发布:蝉知cms 编辑:程序博客网 时间:2024/05/16 16:03
问题:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
解析:1)所谓二叉搜索树,是指空树,或其左子树的元素都小于根元素,右子树的元素都大于根元素,且其左子树和右子树都是二叉搜索树。
2)二叉搜索树后序遍历序列有如下特征:a、最后一个元素是根元素;b、左侧元素可以分为left、right两部分数组,分别是根元素的左孩子和右孩子。
解题思路:
声明两个数组,存放根元素的左子树和右子树,在存放过程中,若出现错误情况,可直接返回false,若分组成功,则分别对根元素的左子树和右子树进行递归。具体代码如下所示:
bool VerifySquenceOfBST(vector<int> sequence) { int size=sequence.size(); if(0==size) return false;if(1==size) return true; int midval;vector<int> left,right; midval=sequence.back();sequence.pop_back();vector<int>::iterator it;for(it=sequence.begin();it!=sequence.end();it++)if(*it>midval){ if(left.empty ())left.push_back(1); break;}else left.push_back(*it);for(;it!=sequence.end();it++)if(*it>midval) right.push_back(*it);<span style="white-space:pre"></span>else return false;if(right.empty())right.push_back(1);return(VerifySquenceOfBST(left)&&VerifySquenceOfBST(right)); }
0 0
- 二叉搜索树后序遍历序列判断
- 二叉搜索树的后序遍历序列序列判断是否是二叉搜索树
- 判断二叉搜索树的后续遍历序列
- 判断二叉搜索树的前序遍历序列
- 判断二叉搜索树的后序遍历序列是否合法
- 判断二叉搜索树是否为后序遍历序列
- 判断序列是否为二叉树后序遍历
- 判断二叉搜索树后序遍历结果
- 二叉搜索树的后序遍历序列(判断后序遍历序列是否合法)
- 枚举所有序列 判断这个序列是不是二叉搜索树前序遍历的结果
- 二叉树系列7:判断整数序列是不是二叉搜索树的后序遍历结果
- 【剑指offer-Java版】24二叉搜索树后序遍历序列
- 二叉树系列——判断一个序列是不是一棵二叉搜索树的遍历序列
- 剑24-判断是否为二叉树后序遍历序列
- 剑指offer:二叉搜索树的后序遍历序列(判断一个数组是否是二叉搜索树的后续遍历序列)
- 判断二叉搜索树后序遍历结果是否正确
- 判断一个整数数组是不是二叉搜索树的后序遍历序列
- Interview----判断整数序列是否是二叉搜索树的后序遍历结果
- 图片的异步加载
- 《HTML5移动开发指南》——笔记5(html5表单元素)
- Hibernate基础
- 单臂路由,三层交换实现vlan间通信
- 反射中的Member.Field
- 二叉搜索树后序遍历序列判断
- Exynos4412 文件系统制作(二)—— 文件系统简介
- mail工具的安装、配置及问题处理
- Python 小练习_班级平均分
- Exynos4412 文件系统制作(一)—— 文件系统的启动过程分析
- windows下运行caffe例子:cifar10图像训练生成caffemodel
- 6.15两个乒乓球对进行比赛,各出三人。
- tcflag_t是什么数据类型
- 一念永恒 > 第111章 触摸桎梏