`
u010815305
  • 浏览: 30546 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

二叉搜素树的后续遍历

 
阅读更多
题目描述:

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出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基础面试题二叉搜索树的后续遍历序列

    java基础面试题二叉搜索树的后续遍历序列本资源系百度网盘分享地址

    python-剑指offer第23题二叉搜索树的后续遍历

    python python_剑指offer第23题二叉搜索树的后续遍历

    java 二叉排序树构建遍历

    排序二叉树的基础代码,包含递归非递归二叉树构建、递归非递归遍历,获取最小最大值。

    二叉排序树_层次遍历

    二叉排序树_层次遍历 二叉排序树(Binary Sort Tree,BST)是一种特殊的二叉查找树(Binary Search Tree,BST),它的每个节点都包含一个关键字,且所有左子树中的关键字都小于当前节点的关键字,所有右子树中的...

    二叉查找树的先序中序后续遍历

    遍历二叉查找树不仅能够获取到有序序列,还可以用于构建平衡树(如AVL树或红黑树)、查找最大和最小元素、打印树的结构以及解决其他算法问题。 总结起来,二叉查找树的先序、中序和后序遍历是理解和操作这种数据...

    java课程设计二叉排序树

    二叉排序树(Binary Sort Tree,BST),也称为二叉查找树或有序二叉树,是一种自平衡的二叉树数据结构,它在处理搜索、插入和删除操作时具有较高的效率。在Java中,我们可以利用面向对象编程的概念来实现二叉排序树...

    二叉排序树的建立和遍历~~

    二叉排序树的建立和遍历~~~ 二叉排序树的建立和遍历~~~ 二叉排序树的建立和遍历~~~

    遍历二叉排序树

    对二叉排序树的遍历,插入和删除操作 C语言实现。。

    二叉排序树的查找,删除与判断

    该算法成功解决了二叉排序树的查找(递归和非递归),节点删除,括号表示法输出的问题,算法基本按照数据结构课本的内容来编写,比较适合初学者对二叉排序树的学习,当然改进的空间还很大

    二叉排序树_17281183_刘梦婷_leavingtbk_二叉排序树_

    1. **构造二叉排序树并中序遍历**:构建二叉排序树的过程是逐个将元素插入树中,每个元素都会根据其大小找到合适的位置。插入过程中,如果元素比当前节点小,则插入到当前节点的左子树;如果元素比当前节点大,则...

    判断二叉搜索树的前序遍历

    《剑指offer》面试题24的相关题目。输入一个整数数组,判断该数组是不是某二叉搜索树的前序遍历。假设输入的数组的任意两个数字互不相同。

    中序遍历二叉排序树

    中序遍历二叉排序树 输入一整数序列,建立二叉排序树,然后中序遍历。 输入说明 输入第一行为整数的个数n,第二行是具体的n个整数。 输出说明 建立二叉排序树,然后输出中序遍历的结果。 输入样例 5 1 6 5 9 8 ...

    操作二叉搜索树(插入节点、遍历)

    遍历二叉搜索树有三种常见方式:前序遍历、中序遍历和后序遍历。 - **前序遍历**:先访问根节点,然后遍历左子树,最后遍历右子树。 - **中序遍历**:先遍历左子树,然后访问根节点,最后遍历右子树。对于二叉搜索...

    二叉搜索树的后序遍历序列,python,jupyter

    二叉搜索树的后序遍历序列,二叉搜索树的后序遍历序列,python,jupyter

    二叉树的二叉链实现及遍历

    本文将深入探讨二叉树的二叉链实现,并讲解如何进行遍历。首先,我们来看看标题提到的“二叉树的二叉链实现”。 二叉链表,也称为链式存储的二叉树,是一种通过链表来表示二叉树的方式。每个节点(通常称为Node)...

    树的遍历和前序遍历后续遍历

    关于树的 遍历的小程序 和树的前序 终须遍历 和后续遍历 输入数字自动生成二叉树等功能的小程序设计

Global site tag (gtag.js) - Google Analytics