题目描述:
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
输入:
每个测试案例包括2行:
第一行为1个整数n(1<=n<=10000),表示数组的长度。
第二行包含n个整数,表示这个数组,数组中的数的范围是[0,100000000]。
输出:
对应每个测试案例,如果输入数组是某二叉搜索树的后序遍历的结果输出Yes,否则输出No。
样例输入:
7
5 7 6 9 11 10 8
4
7 4 6 5
样例输出:
Yes
No
#include<stdio.h>
#include<stdlib.h>
bool verifySquenceOfBST(int sequence[] ,int length)
{
if(sequence==NULL||length<0)
return false;
//二叉搜索树的root是序列最后一个值
int root = sequence[length-1];
//在二叉搜素树中左子树的节点小于根节点
int i=0;
for(;i<length-1;++i)
if(sequence[i]>root)
break;
//在二叉搜素树中右子树的节点大于根节点
int j=i;
for(;j<length-1;++j)
if(sequence[j]<root)
return false;
//判断左子树是不是二叉搜素树
bool left=true;
if(i>0)
left=verifySquenceOfBST(sequence,i);
//判断右子树是不是二叉搜素树
bool right=true;
if(i<length-1)
right=verifySquenceOfBST(sequence+i,length-i-1);
return (left&&right);
}
int main()
{
int length;
scanf("%d",&length);
int sequence[length];
int data;
for(int i=0;i<length;i++)
{
scanf("%d",&sequence[i]);
//scanf("%d",&data);
//sequence[i]=data;
}
if(verifySquenceOfBST(sequence,length))
printf("yes");
else
printf("no");
return 0;
}
结果:
分享到:
相关推荐
建立一位数组,然后以一位数组为例进行二叉排序树的中序遍历
将有双亲域的二叉链表进行中序遍历的递推式算法
根据输入数据建造二叉排序树,并中序遍历,从而输出结果
采用llink-rlink方式存储二叉排序树,编写能够通过键盘输入建立二叉排序树,并在建立完立即在屏幕显示中序遍历结果的程序
java基础面试题二叉搜索树的后续遍历序列本资源系百度网盘分享地址
python python_剑指offer第23题二叉搜索树的后续遍历
排序二叉树的基础代码,包含递归非递归二叉树构建、递归非递归遍历,获取最小最大值。
二叉排序树_层次遍历 二叉排序树(Binary Sort Tree,BST)是一种特殊的二叉查找树(Binary Search Tree,BST),它的每个节点都包含一个关键字,且所有左子树中的关键字都小于当前节点的关键字,所有右子树中的...
遍历二叉查找树不仅能够获取到有序序列,还可以用于构建平衡树(如AVL树或红黑树)、查找最大和最小元素、打印树的结构以及解决其他算法问题。 总结起来,二叉查找树的先序、中序和后序遍历是理解和操作这种数据...
二叉排序树(Binary Sort Tree,BST),也称为二叉查找树或有序二叉树,是一种自平衡的二叉树数据结构,它在处理搜索、插入和删除操作时具有较高的效率。在Java中,我们可以利用面向对象编程的概念来实现二叉排序树...
二叉排序树的建立和遍历~~~ 二叉排序树的建立和遍历~~~ 二叉排序树的建立和遍历~~~
对二叉排序树的遍历,插入和删除操作 C语言实现。。
该算法成功解决了二叉排序树的查找(递归和非递归),节点删除,括号表示法输出的问题,算法基本按照数据结构课本的内容来编写,比较适合初学者对二叉排序树的学习,当然改进的空间还很大
1. **构造二叉排序树并中序遍历**:构建二叉排序树的过程是逐个将元素插入树中,每个元素都会根据其大小找到合适的位置。插入过程中,如果元素比当前节点小,则插入到当前节点的左子树;如果元素比当前节点大,则...
《剑指offer》面试题24的相关题目。输入一个整数数组,判断该数组是不是某二叉搜索树的前序遍历。假设输入的数组的任意两个数字互不相同。
中序遍历二叉排序树 输入一整数序列,建立二叉排序树,然后中序遍历。 输入说明 输入第一行为整数的个数n,第二行是具体的n个整数。 输出说明 建立二叉排序树,然后输出中序遍历的结果。 输入样例 5 1 6 5 9 8 ...
遍历二叉搜索树有三种常见方式:前序遍历、中序遍历和后序遍历。 - **前序遍历**:先访问根节点,然后遍历左子树,最后遍历右子树。 - **中序遍历**:先遍历左子树,然后访问根节点,最后遍历右子树。对于二叉搜索...
二叉搜索树的后序遍历序列,二叉搜索树的后序遍历序列,python,jupyter
关于树的 遍历的小程序 和树的前序 终须遍历 和后续遍历 输入数字自动生成二叉树等功能的小程序设计
对于二叉排序树,中序遍历的结果会得到一个递增的序列,这也是它常被用于排序和查找的原因之一。遍历过程中,可以通过递归或栈的方式来实现。 3. **查找**:在二叉排序树中查找特定值的节点相对简单,从根节点开始...