大一下半期数据结构

是否二叉搜索树

本题要求实现函数,判断给定二叉树是否二叉搜索树。
函数接口定义:

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 分)相关推荐

  1. 5-4 是否同一棵二叉搜索树 (25分)

    https://pta.patest.cn/pta/test/15/exam/4/question/712 这道题考察二叉搜索树的实现,并且还需要一定的逻辑与算法,所以题目还是挺好的. 5-4 是否同 ...

  2. 7-4 是否同一棵二叉搜索树 (25 分)

    是否同一棵二叉搜索树 1.题目描述: 给定一个插入序列就可以唯一确定一棵二叉搜索树.然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到.例如分别按照序列{2, 1, 3}和{2, 3, 1}插入 ...

  3. 7-58 是否完全二叉搜索树 (30 分)

    7-58 是否完全二叉搜索树 (30 分) 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. 输入 ...

  4. 【CCCC】L3-010 是否完全二叉搜索树 (30分),完全二叉树判断+层次遍历(奇怪的方法)

    problem L3-010 是否完全二叉搜索树 (30分) 将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序 ...

  5. 7-1 是否同一棵二叉搜索树 (30分)

    给定一个插入序列就可以唯一确定一棵二叉搜索树.然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到.例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果 ...

  6. 7-2 是否完全二叉搜索树 (30分)

    将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. 输入格式: 输入第一行给出一个不超过20的正整数 ...

  7. 4-2-6 二叉树及其遍历 / 二叉搜索树 / 完全二叉树 完全二叉搜索树 (30 分)

    一个无重复的非负整数序列,必定对应唯一的一棵形状为完全二叉树的二叉搜索树.本题就要求你输出这棵树的层序遍历序列. 输入格式: 首先第一行给出一个正整数 N(≤1000),随后第二行给出 N 个不重复的 ...

  8. 7-4是否同一棵二叉搜索树(不建树)

    什么是二叉搜索树? 1.节点的左子树只包含小于当前节点的数. 2.节点的右子树只包含大于当前节点的数. 3.所有左子树和右子树自身必须也是二叉搜索树. 7-4 是否同一棵二叉搜索树 (25分) 给定一 ...

  9. 数据结构:判断是否为同一棵二叉搜索树

    前言碎语 作为一个代码小白,在自学的过程中,最舒服的好像就是有讲解.有提示.甚至直接是有源码--然而,照着写永远是无法进步的,因为,很可能最后错了自己都不知道错在了哪! 就比如下面这个,照着MOOC小 ...

  10. 【CCCC】L2-004 这是二叉搜索树吗? (25分),二叉搜索树前序遍历

    problem L2-004 这是二叉搜索树吗? (25分) 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值: 其右子树中所有结点的键值大 ...

最新文章

  1. 20162325 金立清 S2 W8 C17
  2. 滚动后如何检查元素是否可见?
  3. 微众WeCross 跨链平台(6)UBI通用区块链接口
  4. boost::log模块实现宽字符日志记录示例
  5. Java黑皮书课后题第3章:*3.32(几何:点的位置)给定一个从点p0(x0,y0)到p1(x1,y1)的有向线段,可以用以下公式判定定点p2(x2, y2)是在线段的左侧、右侧,或者在该线段上
  6. HDU 1874 畅通工程续
  7. 前端 ---jQuery的补充
  8. idea搭建web项目及tomcat部署总结
  9. mysql 备份成文件的脚本_Mysql自动全量备份脚本
  10. 雪城大学信息安全讲义 五、竞态条件
  11. 级联分类器-opencv使用
  12. pytorch---之cudnn.benchmark和cudnn.deterministic
  13. perl语言入门学习
  14. 基于VxWorks的VxBus字符设备驱动
  15. H264 encode and decode
  16. 面对不稳定的百度网盘离线下载,这些备用方案可以帮你应急
  17. 中国互联网二十四年红黑史
  18. 运维软件推荐(附带软件百度网盘分享)
  19. 自然场景文本检测识别 - 综述
  20. 【论文速览】PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection

热门文章

  1. 图论 - 寻找fly真迹
  2. linux的用户和组管理(第五讲)
  3. 水溶彩铅的特点技法运用
  4. 牛客网–华为机试在线训练5:进制转换
  5. 【机器学习】hist参数解读
  6. Hub与Switch的帧的广播细节
  7. java 格式化字符串
  8. 怎么把VC++的注释语句调成其他颜色,只调注释语句
  9. arraylist/vector add()方法诡异之---多次add进去的对象最终都变成最后一次add进去的对象值...
  10. 华硕P4P800-X 主板南桥芯片又烧坏了......