6-2 是否二叉搜索树 (25 分)
大一下半期数据结构
是否二叉搜索树
本题要求实现函数,判断给定二叉树是否二叉搜索树。
函数接口定义:
bool IsBST ( BinTree T );
其中BinTree结构定义如下:
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{ElementType Data;BinTree Left;BinTree Right;
};
函数IsBST须判断给定的T是否二叉搜索树,即满足如下定义的二叉树:
定义:一个二叉搜索树是一棵二叉树,它可以为空。如果不为空,它将满足以下性质:
非空左子树的所有键值小于其根结点的键值。
非空右子树的所有键值大于其根结点的键值。
左、右子树都是二叉搜索树。
如果T是二叉搜索树,则函数返回true,否则返回false。
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>typedef enum { false, true } bool;
typedef int ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{ElementType Data;BinTree Left;BinTree Right;
};BinTree BuildTree(); /* 由裁判实现,细节不表 */
bool IsBST ( BinTree T );int main()
{BinTree T;T = BuildTree();if ( IsBST(T) ) printf("Yes\n");else printf("No\n");return 0;
}
/* 你的代码将被嵌在这里 */
输入样例1:如下图
输出样例1:
Yes
输入样例2:如下图
输出样例2:
No
题目解法:
bool IsBST(BinTree T)
{BinTree p;if(T==0)return true;if(!T->Left&&!T->Right)return true;p=T->Left;if(p){while(p->Right)p=p->Right;if(p->Data>T->Data)return false;}p=T->Right;if(p){while(p->Left)p=p->Left;if(p->Data<T->Data)return false;}return IsBST(T->Left)&&IsBST(T->Right);}
6-2 是否二叉搜索树 (25 分)相关推荐
- 5-4 是否同一棵二叉搜索树 (25分)
https://pta.patest.cn/pta/test/15/exam/4/question/712 这道题考察二叉搜索树的实现,并且还需要一定的逻辑与算法,所以题目还是挺好的. 5-4 是否同 ...
- 7-4 是否同一棵二叉搜索树 (25 分)
是否同一棵二叉搜索树 1.题目描述: 给定一个插入序列就可以唯一确定一棵二叉搜索树.然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到.例如分别按照序列{2, 1, 3}和{2, 3, 1}插入 ...
- 7-58 是否完全二叉搜索树 (30 分)
7-58 是否完全二叉搜索树 (30 分) 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. 输入 ...
- 【CCCC】L3-010 是否完全二叉搜索树 (30分),完全二叉树判断+层次遍历(奇怪的方法)
problem L3-010 是否完全二叉搜索树 (30分) 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序 ...
- 7-1 是否同一棵二叉搜索树 (30分)
给定一个插入序列就可以唯一确定一棵二叉搜索树.然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到.例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果 ...
- 7-2 是否完全二叉搜索树 (30分)
将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. 输入格式: 输入第一行给出一个不超过20的正整数 ...
- 4-2-6 二叉树及其遍历 / 二叉搜索树 / 完全二叉树 完全二叉搜索树 (30 分)
一个无重复的非负整数序列,必定对应唯一的一棵形状为完全二叉树的二叉搜索树.本题就要求你输出这棵树的层序遍历序列. 输入格式: 首先第一行给出一个正整数 N(≤1000),随后第二行给出 N 个不重复的 ...
- 7-4是否同一棵二叉搜索树(不建树)
什么是二叉搜索树? 1.节点的左子树只包含小于当前节点的数. 2.节点的右子树只包含大于当前节点的数. 3.所有左子树和右子树自身必须也是二叉搜索树. 7-4 是否同一棵二叉搜索树 (25分) 给定一 ...
- 数据结构:判断是否为同一棵二叉搜索树
前言碎语 作为一个代码小白,在自学的过程中,最舒服的好像就是有讲解.有提示.甚至直接是有源码--然而,照着写永远是无法进步的,因为,很可能最后错了自己都不知道错在了哪! 就比如下面这个,照着MOOC小 ...
- 【CCCC】L2-004 这是二叉搜索树吗? (25分),二叉搜索树前序遍历
problem L2-004 这是二叉搜索树吗? (25分) 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值: 其右子树中所有结点的键值大 ...
最新文章
- 20162325 金立清 S2 W8 C17
- 滚动后如何检查元素是否可见?
- 微众WeCross 跨链平台(6)UBI通用区块链接口
- boost::log模块实现宽字符日志记录示例
- Java黑皮书课后题第3章:*3.32(几何:点的位置)给定一个从点p0(x0,y0)到p1(x1,y1)的有向线段,可以用以下公式判定定点p2(x2, y2)是在线段的左侧、右侧,或者在该线段上
- HDU 1874 畅通工程续
- 前端 ---jQuery的补充
- idea搭建web项目及tomcat部署总结
- mysql 备份成文件的脚本_Mysql自动全量备份脚本
- 雪城大学信息安全讲义 五、竞态条件
- 级联分类器-opencv使用
- pytorch---之cudnn.benchmark和cudnn.deterministic
- perl语言入门学习
- 基于VxWorks的VxBus字符设备驱动
- H264 encode and decode
- 面对不稳定的百度网盘离线下载,这些备用方案可以帮你应急
- 中国互联网二十四年红黑史
- 运维软件推荐(附带软件百度网盘分享)
- 自然场景文本检测识别 - 综述
- 【论文速览】PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection