本题要求实现二叉排序树的查找操作。 对于二叉排序树,如下图: 二叉排序树.png 输入样例: 4 1 8 0 9 输出样例: 1 is found 8 is found 0 is not found 9 is not found 其中BSTree结构定义如下: typedef int ElemType; typedef struct BSTNode { ElemType data; struct BSTNode *lchild,*rchild; }BSTNode,*BSTree;

时间: 2024-01-06 14:04:56 浏览: 23
以下是二叉排序树查找操作的代码实现: ```c++ #include <iostream> using namespace std; typedef int ElemType; typedef struct BSTNode { ElemType data; struct BSTNode *lchild,*rchild; }BSTNode,*BSTree; // 二叉排序树的查找操作,返回查找到的结点指针 BSTree SearchBST(BSTree T, ElemType key) { if (T == NULL || T->data == key) { // 根结点为空或等于key,直接返回 return T; } else if (key < T->data) { // key小于根结点,递归查找左子树 return SearchBST(T->lchild, key); } else { // key大于根结点,递归查找右子树 return SearchBST(T->rchild, key); } } int main() { BSTree T = NULL; // 初始化为空树 int n, key; cin >> n; for (int i = 0; i < n; i++) { cin >> key; // 将key插入二叉排序树中 BSTree p = T, pre = NULL; // p指向待插入结点,pre指向p的父结点 while (p != NULL) { pre = p; if (key < p->data) { p = p->lchild; } else { p = p->rchild; } } p = new BSTNode; p->data = key; p->lchild = p->rchild = NULL; if (pre == NULL) { // 空树,新结点作为根结点 T = p; } else if (key < pre->data) { // 新结点作为左孩子 pre->lchild = p; } else { // 新结点作为右孩子 pre->rchild = p; } } // 依次查找每个元素 while (cin >> key) { BSTree p = SearchBST(T, key); if (p == NULL) { cout << key << " is not found" << endl; } else { cout << key << " is found" << endl; } } return 0; } ``` 对于每个需要查找的元素,我们先用SearchBST函数在二叉排序树中查找,返回查找到的结点指针。如果返回的指针为空,则说明该元素在二叉排序树中不存在,输出“not found”;否则输出“found”即可。

相关推荐

最新推荐

recommend-type

js+canvas实现图片格式webp/png/jpeg在线转换

2、将图片转换为canvas,canvas.toDataURL()方法设置为我们需要的格式,如:”image/webp”,”image/jpeg”,”image/png”。 3、最后将canvas转换为图片,显示在网页中。点击右键保存,就得到了不同格式的图片了。 ...
recommend-type

WPF获得PNG图片外观Path数据.docx

WPF获得PNG图片转为外观Path数据:主要是把图片png格式转为WPF使用的path格式使用,可以快速解决,程序员自己画图的能力。
recommend-type

python实现批量nii文件转换为png图像

主要介绍了python实现批量nii文件转换为png图像,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

python通过pil模块将raw图片转换成png图片的方法

主要介绍了python通过pil模块将raw图片转换成png图片的方法,实例分析了Python中pil模块的使用技巧,并Image.fromstring函数进行了较为详尽的分析说明,需要的朋友可以参考下
recommend-type

Pytorch 使用 nii数据做输入数据的操作

使用pix2pix-gan做医学图像合成的时候,如果把nii数据转成png格式会损失很多信息,以为png格式图像的灰度值有256阶,因此直接使用nii的医学图像做输入会更好一点。 但是Pythorch中的Dataloader是不能直接读取nii图像...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。