//实现二叉查找树进行数据查找
#include<iostream>
#include<malloc.h>
typedef struct BiNode{
int data;
struct BiNode *lchild, *rchild;
}BiNode;
typedef BiNode* BiTree;
using namespace std;
void InsertBST(BiTree *bst, int key)
/*若在二叉排序树中不存在关键字等于key的元素,插入该元素*/
{
BiTree s;
if (*bst == NULL)/*递归结束条件*/
{
s=(BiTree)malloc(sizeof(BiNode));/*申请新的结点s*/
s->data=key;
s->lchild=NULL;
s->rchild=NULL;
*bst=s;
}
else
if (key < (*bst)->data)
InsertBST(&((*bst)->lchild), key);/*将s插入左子树*/
else
if (key > (*bst)->data)
InsertBST(&((*bst)->rchild), key); /*将s插入右子树*/
}
BiTree SearchBST(BiTree bst,int key)
/*在根指针bst所指二叉排序树中,递归查找某关键字等于key的元素,
若查找成功,返回指向该元素结点指针,否则返回空指针*/
{
if (!bst)
return NULL;
else
if (bst->data == key)
return bst;/*查找成功*/
else
if (bst->data > key)
return SearchBST(bst->lchild, key);/*在左子树继续查找*/
else
return SearchBST(bst->rchild, key);/*在右子树继续查找*/
}
void InOrder(BiTree root)
/*中序遍历二叉树, root为指向二叉树根结点的指针*/
{
if (root!=NULL)
{
InOrder(root->lchild); /*中序遍历左子树*/
cout<<root->data<<" "; /*输出结点*/
InOrder(root->rchild); /*中序遍历右子树*/
}
}
int main()
{
cout<<"输入数据个数:\n";
int n, data;
cin>>n;
BiTree T = NULL;
cout<<"请输入"<<n<<"个数:\n";
while(n--)
{
cin>>data;
InsertBST(&T, data);
}
printf("中序遍历排序二叉树:");
InOrder(T);
cout<<endl;
while(1){
cout<<"请输入查找数据(输入-1结束查找): \n";
cin>>data;
if(data==-1)
{
break;
}
else
{
if(SearchBST(T, data))
cout<<"找到了\n";
else
cout<<"找不到\n";
}
}
return 0;
}
相关推荐
6种常用数据分析方法详解:从描述统计到时间序列
数据分析是连接数据与业务决策的桥梁。面对海量数据,掌握描述性统计与对比分析可快速了解现状与差距;相关分析与回归分析能揭示变量间的关联与影响大小;聚类分析用于用户分群,时间序列分析则预测未来走势。这些方法广泛应用于用户画像、销量预测、活动效果评估等场景,是数据分析师和运营人员必备的技能。系统掌握这6种核心方法的使用场景、原理逻辑与实操步骤,能够帮助读者建立完整分析框架,真正用数据驱动业务增长。
二叉树的查找
在二叉树这种数据结构中进行数据查找是最方便的,现在我们就对查找最小值、最大值和特定值进行一个梳理: 最小值: 最左子树的叶子节点 最大值: 最右子树的叶子节点 特定值: target与current进行比较,如果比current大,在current.right进行查找,反之类似。 清楚思路后,就动手来写: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1...
IAR9.30以上版本安装、注册、新建工程和配置过程详细介绍
IAR 一般是指一款嵌入式软件的集成开发环境,类似于 MDK-Keil 这款软件。IAR 对于不同的内核处理器,是对应不同的 IAR 软件的,IAR 到目前为止支持大部分的MCU,比如8051系列、ARM架构系列、MSP430系列、AVR系列等等这些常用的芯片架构。对于 ARM 架构的芯片,有对应的 IAR Embedded Workbench for ARM 软件平台,因为我主要是使用 ARM 架构芯片,下面安装、注册和使用都是基于这个版本进行介绍的。
数据结构:JAVA_二叉数查找树基本实现(中)
数据结构:二叉数查找树基本实现(JAVA语言版) 1.写在前面 二叉查找树得以广泛应用的一个重要原因是它能保持键的有序性,因此我们可以把它作为实现有序符号表API中的众多方法的基础。 也就是说我们构建较为完整的二叉查找树API,为以后作为有序符号表提供基础。 二叉查找树是高效的,灵活的。 ..... 2.代码分解 2.1 找到最大键和最小键 既然是二叉查找树可以...
海康威视iSC平台视频流对接:RTSP、HLS、WS三种协议到底该怎么选?
本文深入分析海康威视iSC平台视频流对接中RTSP、HLS和WebSocket三种协议的优缺点,帮助开发者根据实时性、兼容性和网络环境做出最优选择。特别适合综合安防管理平台的Web视频监控系统开发,提升用户体验和系统性能。
2025年ZBrush雕刻实战:从基础到高级技巧全解析
本文全面解析2025年ZBrush雕刻实战技巧,从基础界面操作到高级笔刷应用。详细介绍了核心功能区域如工具面板和灯箱,以及推荐材质选择。重点讲解6个实用笔刷技巧,包括Standard、Move和ClayBuildup等,帮助用户从入门到精通掌握ZBrush雕刻技术。
数据结构:二叉查找树的实现
二叉查找树 二叉树是节点最多只有两个子树的树状结构,这两个子树可以称为左子树和右子树。可是对于普通的二叉树,并没有足够的信息来提示我们左子树和右子树存储的是什么,我们没有办法进行高效的信息查找。为了提高查找效率,我们会把二叉树升级为二叉查找树(Binary Search Tree)。 二叉查找树是符合以下定义的二叉树: 1.节点左子树中全部的节点键值都比该节点要小。 2.节点右子树中全部...
core_analyzer分析c++程序内存占用
环境:centos; 进程:单进程多线程c++程序; 问题:1. 分析系统内存占用; 2. 分析ptmalloc内存空洞(bins上的空闲chunk的大小); 包括:1. 占用了很大内存的c++进程; 2. gcore(在进程不core dump的情况下生成core文件); 3. core_analyzer(分析gcor...
数表查找之二叉搜索树
文章目录1.基本思想2.算法步骤3.代码实现3.2.算法实现3.3.1.创建3.3.2.查找3.3.3.插入3.2.4.迭代3.2.5.删除3.2.测试程序4.实验结果与心得完整代码 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势,所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作。 1.基
2026华为OD机试(JAVA&Go)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ
华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,Java实现。
ardupilot 方向余弦矩阵/旋转矩阵的理解
本节主要记录自己对ardupilot中用到的方向余弦矩阵/旋转矩阵的理解,欢迎批评指正,有些资料参考网上写的比较好的资料,免得查找资料麻烦。旋转矩阵的坐标理解:表示从旋转矩阵的下标的坐标系的坐标变换到上标表示的坐标系坐标下。旋转矩阵的坐标系理解:表示从旋转矩阵的上标的坐标系变换到下标表示的坐标系下。从旋转矩阵的投影更好理解,比如下面旋转矩阵的第一行是左边坐标系的第一维分量在右边坐标系的投影。
二叉搜索树(城市数据库)
实验内容: 1.利用BST实现一个城市数据库:每个数据库结点包括城市名称和以整数x与y表示的城市坐标,根据城市名称组织该BST; 2.在该数据库上实现按城市名称进行的插入、删除和检索; 3.打印出以指定字母打头的所有城市记录; 4.打印出与指定点的距离在给定值之内的所有城市记录; #include <iostream> #include <string> using namespace std; class BSTNode {//二叉树节点 private: string key;
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
算法与数据结构【Java实现】:二叉查找树
链表能够很方便的存储数据,但是,数据的组织只能是线性的,不能有层次的组织数据,且查找元素需要线性查找,复杂度O(n)。 二叉查找树是一种按照排序组织数据的有层次的方式 它的特点是: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; 即:对于任何一个子树,左子树所有结点值小于根...
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
数据结构 js实现二叉查找树
二叉查找树 二叉查找树(BST), 又叫做二叉排序树,二叉搜索树,是一种对查找和排序都有用的特殊二叉树。 二叉查找树或者空树,或者满足下面三个性质: 1、若其左子树非空,则左子树上所有结点的值都小于根节点的值。 2、若其右子树非空,则右子树上所有结点的值都大于根节点的值。 3、其左右子树都是一棵二叉查找树。 二叉查找树的特性:左子树 < 根 < 右子树, 即二叉查找树的中序遍历是一个递增序列。 二叉查找树的查询 因为二叉查找树的中序遍历有序性,即得到的递增的序列,由于有序,查找与二分查找类似,
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
数据结构--二叉查找树的实现以及性能分析
目录 二叉查找树 二叉查找树的实现 1、查询 2、新增 3、删除 支持重复数据的二叉查找树 二叉查找树的性能分析 二叉查找树 二叉查找树又称二叉搜索树,也被称为二叉排序树 问题一:什么样的树才是二叉查找树? 在树中的任意节点,其左子树中的每一个节点均小于该节点值,其右子树中的值均大于该节点的值。 如果使用中序遍历,遍历二叉查找树,可以输出一个有序的数据序列,时间复杂度为O(n),非常高效。 二叉查找树的实现 1、查询 先取根节点与要查询的数据进行比较,如果等于根节点,那就.
c++类实现二叉查找树的抽象数据结构
说明:1.0 二叉查找树可以看成是改进的二分查找法: 不需要依赖有序的数组1.1 对于二叉查找树的前缀/后缀的查找,可能需要改变二叉树的类型,增加parent指针1.2 对于插入/删除/查找(二分,最值之类)的操作,不需要考虑parent指针的问题1.3 二叉查找树的平衡度可能很差,可能的解决办法:1.随机读取数组中的数据; 2.重新构建一颗AVL树#ifndef BINARYTREE_H
数据结构-二叉查找树的C++实现
前一段时间学习了一下二叉查找树的结构,自己也练习一下,把源代码传上来!做了一些简单的测试,基本没有问题! 1 #ifndef BINARYTREE_H 2 #define BINARYTREE_H 3 4 #include <iostream> 5 using namespace std; 6 7 template<class T...
C 实现数据结构二叉查找树
二叉查找树特点每个节点X,左子树的值都都小于X,右子树的值都大于X 二叉树声明 #ifndef _Tree_H struct TreeNode; typedef struct TreeNode *Position; typedef struct TreeNode *SearchTree; SearchTree MakeEmpty(SearchTree T); Position Fi
php二叉搜索,【PHP 实现数据结构】二叉查找树
什么是二叉树在了解二叉查找树之前,我们行了解一下树的概念。树由节点和层级关系组成,是一种非线性的数据结构。就像现实中树的叶子和枝干一样。树枝把树叶一片片连接起来,树叶就是节点,树枝就是路径。像这样而二叉树是一种特殊的树,它每个节点最多只会有两个节点。像上图,因为节点 D 有三个子节点,它就不能称为二叉树。什么是二叉查找树二叉查找树又称为二叉排序数,是一种更特殊的树,首先它是二叉树,最多只会有两个节...
Python数据结构————二叉查找树的实现
对于二叉查找树的每个节点Node,它的左子树中所有的关键字都小于Node的关键字,而右子树中的所有关键字都大于Node的关键字。 二叉查找树的平均深度是O(log N)。 1.初始化 class BinarySearchTree(object): def __init__(self,key): self.key=key self.l...
数据结构与算法--二叉查找树实现原理
二叉查找树 上一篇:数据结构与算法–二叉树
二叉查找树 / 二叉搜索树 数据结构原理、示例和算法实现
二叉查找树结构和算法以及其简单实现
二叉查找树-增删查和针对重复数据处理的 Java 实现
二叉查找树-增删查和针对重复数据处理的 Java 实现
二叉查找树 - C语言实现(摘自数据结构与算法分析 C语言描述)
一、概述 二叉树的一个重要的应用是它们在查找中的使用。使二叉树成为查找树的性质是,对于树中的每个结点X,它的左子树中所有关键字值小于X的关键值,而它的右子树中所有关键字大于X的关键值。在图1中,左边的树是二叉查找树,但右边的树则不是(想一想为什么)。 图1 两棵二叉树(只有左边的树是查找树) 二、实现 因为二叉树最多有两个
【数据结构与算法】详解什么是树结构,并用代码手动实现一个二叉查找树
本篇文章将开始讲解树结构。其实树结构是平日里我们常见的一种数据结构,例如家族族谱、公司管理层级结构图等,这样的数据结构的存在一定有一定的道理。因此,在计算机领域中,树结构也是会被广泛用到的,例如数据库系统中就有用到。那么本文就从零开始学习一下树结构,并且也会封装一个二叉查找树,本文 3万+ 的详细教程,希望大家耐心观看,我是以一个纯小白的角度来写的这篇文章,相信大家认真看一定都能看懂的
335



被折叠的 条评论
为什么被折叠?



