笔试面试之判断序列是否2叉查找树后序遍历
来源:互联网 发布:apple beta 版软件计划 编辑:程序博客网 时间:2024/05/23 20:23
输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。
例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:
8
/ /
6 10
/ / / /
5 7 9 11
因此返回true。
如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。
分析:这是一道trilogy的笔试题,主要考查对二元查找树的理解。
在后续遍历得到的序列中,最后一个元素为树的根结点。从头开始扫描这个序列,比根结点小的元素都应该位于序列的左半部分;从第一个大于跟结点开始到跟结点前面的一个元素为止,所有元素都应该大于跟结点,因为这部分元素对应的是树的右子树。根据这样的划分,把序列划分为左右两部分,我们递归地确认序列的左、右两部分是不是都是二元查找树。
参考代码:
using namespace std;
bool verifySquenceOfBST(int squence[], int length)
{
if(squence == NULL || length <= 0)
return false;
// root of a BST is at the end of post order traversal squence
int root = squence[length - 1];
// the nodes in left sub-tree are less than the root
int i = 0;
for(; i < length - 1; ++ i)
{
if(squence[i] > root)
break;
}
// the nodes in the right sub-tree are greater than the root
int j = i;
for(; j < length - 1; ++ j)
{
if(squence[j] < root)
return false;
}
// verify whether the left sub-tree is a BST
bool left = true;
if(i > 0)
left = verifySquenceOfBST(squence, i);
// verify whether the right sub-tree is a BST
bool right = true;
if(i < length - 1)
right = verifySquenceOfBST(squence + i, length - i - 1);
return (left && right);
}
转载自:http://zhedahht.blog.163.com/blog/static/25411174200725319627/
- 笔试面试之判断序列是否2叉查找树后序遍历
- 微软面试之9题 判断整数序列是不是二元查找树的后续遍历结果
- 微软面试100题系列---判断整数序列是否为二叉查找树的后序遍历
- 判断整数序列是否为二元查找树后序遍历的结果
- 判断序列是否为二叉树后序遍历
- 微软面试100之9 判断整数序列是不是二元查找树的后序遍历结果
- 每天一道算法题(5)——判断整数序列是否是二叉查找树后序遍历结果
- 剑24-判断是否为二叉树后序遍历序列
- 判断某个序列是否是二元查找树的后序遍历结果
- 判断整数序列是否为二叉查找树的后序遍历结果
- 判断一个序列是否是一个二叉查找树的后序遍历结果
- 判断整数序列是否是二叉查找树的后序遍历
- 树(4)判断某个序列是否是二叉查找树的后序遍历结果
- 判断序列是否是二叉查找树的后续遍历结果
- 面试100题:9.判断整数序列是不是二元查找树的后序遍历结果
- 面试100题:9.判断整数序列是不是二元查找树的后序遍历结果
- 判断一个序列是否是二叉查找树的后序、前序、中序遍历序列
- [编程之美-04]判断整数序列是不是二元查找数的后序遍历结果
- Sql Server 数据库字典
- Visual Fortran 希望能搞定
- Web开发者所具备的10大应用网站
- B2C系统ASP.NET和PHP的比较
- 国外类似VC的emule下载网站网址大全
- 笔试面试之判断序列是否2叉查找树后序遍历
- 四川“史上最牛班”:27人全被国外名校录取
- Linux下构建Cacti流量与性能监测系统(图)
- Boyer-Moore算法的C++实现
- Symbolic Toolbox 表达式化简与数值转换(ZZ)
- 用Spring整合Struts。
- android安装和卸载程序
- 几个窗体事件的顺序
- 改进计算程序如下,计算时间还会比较长。。。