判断是否为二叉树的后续遍历
2015-04-24 22:08
267 查看
题目要求:
判断整数序列是不是二元查找树的后续遍历结果。输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。
如果返回true,否则返回false.
因此返回true.如果输入7,4,6,5,没有那棵树的后序遍历的结果是这个序列,因此返回false.
解析:
这是二叉查找树树后序遍历重建问题。在这个问题中,最后一个元素是根。例子中二叉查找树的跟是8.So we can split the array by the root.代码如下:
int is_post_traverse(int* arr, int len)
{
int *head, *pos, *p;
if (arr == NULL || len <= 0)
return 0;
if (len == 1)
return 1;
head = arr + len - 1;
p = arr;
while (*p < *head)
p++;
pos = p;
while (p < head)
{
if (*p < *head)
return 0;
p++;
}
if (!is_post_traverse(arr, pos - arr))
return 0;
return is_post_traverse(pos, head - pos);
}
相关文章推荐
- 剑指offer24判断某一序列是否是某一搜索二叉树的后续遍历结果
- 二叉树相关操作(先序建立二叉树、求子节点数量,判断是否为平衡二叉树,先序遍历,中序遍历,后序遍历)
- 关于序列的面试题1 ------------- 判断整数序列是否是二叉排序树的后续遍历
- 判断二叉树的后序遍历序列是否合法
- [置顶] 二叉树层次遍历的应用--判断一颗二叉树是否为规则二叉树
- 层序遍历判断是否为完美二叉树
- 判断数组是否为搜索二叉树的后序遍历
- 【面试题】剑指offer24--判断一个序列是否为二叉树的后序遍历
- 【LeetCode91-100】编码种数,逆转单链表,IP地址转化,中序遍历二叉树,生成二叉搜索树,计算二叉树个数,交叉string【hard】,判断二叉搜索树是否合法,恢复二叉树(有两个元素被交换)
- 【二叉树】层次遍历二叉树以及判断一棵树是否是完全二叉树
- 输入一个数组,判断该数组是否是某二叉树的前序遍历结果
- 二叉树的遍历(篇4)判断从根到叶节点的和是否等于某个给定的值
- 算法--判断一个数字序列是否为二叉排序树的后续遍历
- 二叉树的链式存储结构 前序 后序 中序 层序遍历操作实现 判断是否完全二叉树
- 判断给定数组是否是二叉树的前序或者后序遍历结果
- 判断一个序列是否为某二叉搜索树的后续遍历结果
- 判断二叉树的后续遍历序列
- 后序遍历求解判断一颗二叉树是否为平衡二叉树
- 剑指offer 判断数组的后序遍历是否为搜索二叉树