第七章 查找——二叉排序树

数据结构第七章(二)-树形查找:二叉排序树与平衡二叉树 主要讲了二叉排序树和平衡二叉树,及它们的一些性质和操作。要注意的就是平衡二叉树的插入删除操作,那些左旋右旋比较麻烦一点,其他没什么了。 阅读详情

二叉排序的建立

//然后找出9在第一串数字中的起始位置和最终出现的位置 时间复杂度log2^5
//【输入】
//         1599985
//         9
//【输出】
//         2 4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
using namespace std;

//创建一棵二叉树
typedef struct BiTNode
{
    int data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;



void InsertBiTree(BiTree &T,int e)
{
    BiTNode *p;
    if(!T)
    {
        p=(BiTNode*)malloc(sizeof(BiTNode));
        p->data=e;
        p->lchild=p->rchild=NULL;
        T=p;
    }
    else if(e<T->data)
    {
        InsertBiTree(T->lchild,e);
    }
    else if(e>T->data)
    {
        InsertBiTree(T->rchild,e);
    }
}
void CreateBiTree(BiTree &T,int A[],int n)
{
    int i;
    T=NULL;
    for(i=0;i<n;i++)
    {
      InsertBiTree(T,A[i]);
    }
}
void PreTraverse(BiTree T)
{
    if(T)
    {
        printf("%d ",T->data);
        PreTraverse(T->lchild);
        PreTraverse(T->rchild);
    }
}

int main()
{
    int n;
    cin>>n;
    int B[n];
    for(int i=0;i<n;i++)
    {
        cin>>B[i];
    }
    printf("\n");
    BiTree T;
    CreateBiTree(T,B,n);
    PreTraverse(T);
}

在这里插入图片描述
二叉排序树的查找

//二叉排序树的递归查找
BiTNode * SearchBT(BiTree T,int e)
{
    if(T==NULL||e==T->data)
    {
        return T;
    }
    else if(e<T->data)
    {
        return SearchBT(T->lchild,e);
    }
    else
    {
        return SearchBT(T->rchild,e);
    }
}

完整代码:

//然后找出9在第一串数字中的起始位置和最终出现的位置 时间复杂度log2^5
//【输入】
//         1599985
//         9
//【输出】
//         2 4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
using namespace std;

//创建一棵二叉树
typedef struct BiTNode
{
    int data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;



void InsertBiTree(BiTree &T,int e)
{
    BiTNode *p;
    if(!T)
    {
        p=(BiTNode*)malloc(sizeof(BiTNode));
        p->data=e;
        p->lchild=p->rchild=NULL;
        T=p;
    }
    else if(e<T->data)
    {
        InsertBiTree(T->lchild,e);
    }
    else if(e>T->data)
    {
        InsertBiTree(T->rchild,e);
    }
}
void CreateBiTree(BiTree &T,int A[],int n)
{
    int i;
    T=NULL;
    for(i=0;i<n;i++)
    {
      InsertBiTree(T,A[i]);
    }
}
void PreTraverse(BiTree T)
{
    if(T)
    {
        printf("%d ",T->data);
        PreTraverse(T->lchild);
        PreTraverse(T->rchild);
    }
}
//二叉排序树的递归查找
BiTNode * SearchBT(BiTree T,int e)
{
    if(T==NULL||e==T->data)
    {
        return T;
    }
    else if(e<T->data)
    {
        return SearchBT(T->lchild,e);
    }
    else
    {
        return SearchBT(T->rchild,e);
    }
}
int main()
{
    int n,e;
    cin>>n;
    int B[n];
    for(int i=0;i<n;i++)
    {
        cin>>B[i];
    }
    printf("\n");
    BiTree T;
    BiTNode *p;
    CreateBiTree(T,B,n);
    PreTraverse(T);
    cin>>e;
    p=SearchBT(T,e);
    if(p->data==e)
    {
        printf("数据%d已找到",p->data);
    }
    else
    {
        printf("数据%d未找到",p->data);
    }

}

在这里插入图片描述

【4月第三周学习记录】数据结构与算法王卓-第七章查找-树表的查找(二叉排序树)(不附代码) 目录 0. 树表查找的来历 1. 二叉排序树(二叉查找树,二叉搜索树)是什么? 2.二叉排序树的查找算法 思路 存储结构 查找算法(伪代码) 3.二叉排序树的查找算法的效率分析 如何确定查找次数 平均查找长度ASL 4. 二叉排序树的操作(思路) 生成二叉排序树 插入结点 删除结点 0. 树表查找的来历 主要研究前两种 1. 二叉排序树(二叉查找树,二叉搜索树)是什么? 二叉排序树是空树,或: 其根节点的左子树非空,且所有结点比根节点小 其根节点的右子树非空.. 阅读详情

相关推荐

第七章 查找

第七章 查找

qq_45604925的博客 778

二叉树操作

二叉树操作实验目的实现如下二叉树操作,Input:1-n的数组(1)通过插入操作建立二叉树(2)实现查找、最大/小关键字查询(3)从1到n的依次删除 实验原理二叉搜索树上的基本操作所花费的时间与这棵树的高度成正比。二叉搜索树可以使用一个链表数据结构来表示,其中每个结点都是一个对象。每个结点包含属性key,left,right,p,它们分别指向结点的关键字,左孩子,右孩子和双亲。如果某个孩子结点和父...

JayInnn的博客 770

数据结构实验-二叉排序树算法

一、问题描述 根据给定的关键字序列,实现二叉排序树的基本操作。 输入格式:8, 10, 5, 6, 3, 13 二、实验目的 掌握二叉排序树的存储方法,实现二叉排序树的创建、查找、插入、删除、平均查找长度等基本操作。 三、实验内容及要求 1、构造二叉排序树的存储结构。 2、实现创建、查找、插入、删除、平均查找长度等操作。

在二维数组中查找某一个数字;如何获取二叉树从根到当前节点的路径;二叉搜索树;前序遍历+中序遍历还原二叉树;

在二维数组中查找某一个数字; 思想 从这两个脚中的某一个脚开始查找,总之原则就是,当前所在元素的上面和另一个位置,两个位置的元素必须一个大于一个小与当前元素,不然无法选择走那一条路 class Solution { public: bool Find(int target, vector<vector<int> > array) { // array是二维数组...

weixin_43767691的博客 468

金融科技数据源

数字金融开放研究平台

平平淡淡,戒急用忍,一生学闭嘴。 1758

Kali实战:构建安卓远程监控工具,实现拍照、定位与信息获取

本文详细介绍了如何使用Kali Linux构建安卓远程监控工具,实现拍照、定位与信息获取功能。通过Metasploit框架生成安卓载荷,部署到目标设备并建立连接,执行远程监控操作如获取位置信息、拍照和读取通讯录。文章还提供了进阶技巧与问题排查方法,强调法律与道德考量。

weixin_28716443的博客 239

c++ 二叉树打印节点路径

leetcode上有道题是关于path sum的,我第一时间的做法是用二叉树的路径去与sum比较。所以需要去打印出二叉树的节点路径,以下是用回溯法。 1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 5 struct TreeNode { 6 in...

diaojie6179的博客 580

【从零开始学Skynet】实战篇《球球大作战》(一):功能设计

为了能把之前在基础篇中学习到的Skynet的各种知识结合起来,所以在实战篇中,我们准备开发一个完整的游戏案例《球球大作战》,介绍分布式游戏服务端的实现方法。

我是一条寻水的鱼 2981

树表查找的实现(二叉排序树)

树表查找的实现(二叉排序树) 一.实验目的 (1)熟悉二叉排序树的性质 (2)掌握二叉排序树建立与查找算法; 二.实验内容 (1)根据序列{17,25,30,33,34,45,47,50,55,90,100,120,130}画出相应的二叉排序树; (2)在二叉树基本操作实现的代码基础上进行修改,实现二叉排序树的添加操作和查找操作 三.基于二叉排序树的查找算法设计(给出详细的算法步骤,不是程序代码) 二叉排序树的添加(add)操作:(private TreeNode add(TreeNode node,E e

zeroxiaoxian的博客 657

基于大疆TSDK与Pix4D的热红外数据工程化处理:从RJPG到温度正射影像的完整工作流

本文详细介绍了基于大疆TSDK与Pix4D的热红外数据工程化处理完整工作流。通过Python脚本自动化解析RJPG格式的热红外图像,提取并转换其中的原始辐射数据为包含真实温度信息的TIFF文件,再结合Pix4Dmapper进行批量拼接,最终生成可直接用于GIS分析的温度正射影像图。该流程解决了手动处理效率低下、参数校准复杂等难题,实现了从原始数据到定量分析成果的高效、准确、可重复生产。

weixin_29161785的博客 377

SceneSplat

目标:训练一个网络,输入高斯参数 → 输出与自然语言空间对齐的特征。考虑到标注语义的 3DGS 数据有限,作者设计了。策略,让模型在无标签场景上学到有用表征。都有一个与自然语言对齐的语义特征。这是整个方法的第一步,目标是让。

weixin_61091146的博客 1284

二叉搜索树(二叉排序树)

一.概念 二叉搜索树又称二叉排序树,具有以下性质: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜索树 注意:二叉搜索树中序遍历的结果是有序的 二、基本操作 1.查找元素 思路:二叉搜索树的左子树永远是比根节点小的,而它的右子树则都是比根节点大的值。当前节点比要找的大就往左走,当前元素比要找的小就往右走 public Node search(int key) { if(root ==

爱敲代码的三毛的博客 4万+

DAB协议解读ETSI TS 103 461

数字信号广播( Digital Audio Broadcasting 简称DAB)是继AM、FM传统模拟广播之后的第三代广播--数字信号广播,它提供了接近CD质量的声音,广播及商机无限的附加数据服务,具有抗噪声、抗干扰、抗电波传播衰落、适合高速移动接收等优点,保证固定、携带及移动时接收信号的质量。DAB的原始版本使用MP2音频编解码器。该系统的升级版本于2007年2月发布,称为DAB+,它使用基于改进的离散余弦变换(MDCT)的HE-AACv2(AAC+)音频编解码器。

qflook的博客 4480

第七章 查找 五、二叉排序树

二叉排序树(Binary Search Tree,BST)是一种特殊的二叉树,它满足以下条件:若左子树不为空,则左子树上所有节点的值(权值)均小于它的根节点的值;若右子树不为空,则右子树上所有节点的值(权值)均大于它的根节点的值;左、右子树本身也分别为二叉排序树。二叉排序树的结构可以在查找、插入、删除操作中发挥重要作用,具有快速查找、插入、删除的特点。

icbbm的博客 768

机器人在果园内行巡检仿真(2D雷达、realsense相机)

DiffBot是一种具有两个轮子的自主差动驱动机器人。它的主要处理单元是一个运行Ubuntu Mate 20.04和ROS 1 (ROS Noetic)中间件的Raspberry pi4b。该存储库包含ROS驱动包、真实机器人的ROS控制硬件接口和模拟DiffBot的配置。修改配置文件orchard_world.launch。

如果想成为中心,那么就到中心去吧。 1312

【传感器模块项目实战】机器人/无人驾驶常用传感器模型、选型与安装

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!无人车&无人机导航合集本文先对机器人/无人驾驶常用传感器模型、选型与安装做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容分为位置式绝对型编码器增量式编码器打比赛的时候用过欧姆龙的增量式编码器,也用过待编码器的步进电机。【防盗标记–盒子君hzj】增量式编码器正交编码输出信号,用于识别正转和反转,通过微控制器(单片机)的片内外设硬件/软件解码(1)惯性器件-机械陀螺。

qq_35635374的博客 448

数据结构第七章查找-树表的查找(二叉排序树的查找)

【代码】数据结构第七章查找-树表的查找(二叉排序树的查找)

2305_78057683的博客 326

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【王道数据结构课后练习完整代码】第七章 查找----二叉排序树

7.3.4-10 设计一个算法,从大到小输出二叉排序树中所有值不小于k的关键字。7.3.4-8 利用二叉树遍历的思想编写一个判别二叉树是否是平衡二叉树的算法。7.3.4-9 设计一个算法,求出给定二叉排序树中最小和最大的关键字。

致力于成为一名data scientist 的奋斗者 404

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

王道2025数据结构代码总结:第七章 查找

7.2.1顺序查找 折半查找 7.3.1二叉排序树(BST)的非递归查找 二叉排序树插入操作 二叉排序树的构造

iswyt的博客 276

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

王道26数据结构考研代码第七章---第八章(带main函数运行)

【代码】王道26数据结构考研代码第七章---第八章(带main函数运行)

m0_73950692的博客 238

《数据结构(C语言版)第二版》第七章-查找(算法设计题)

试写出折半查找的递归算法。100。

qq_44883214的博客 759

数据结构第七章查找-算法7.4+二叉排序树的递归查找+算法7.5 二叉排序树的插入+算法7.6二叉排序树的创建+算法 7.7二叉排序树的删除

【代码】数据结构第七章查找-算法7.4+二叉排序树的递归查找+算法7.5 二叉排序树的插入+算法7.6二叉排序树的创建+算法 7.7二叉排序树的删除。

2305_78057683的博客 180

《数据结构》-第七章 查找(知识点总结)

第七章 查找 本章开始介绍关于前几章这些数据结构的相应的运算—查找。关于查找的不同算法为每年考试考查的重点,主要分为线性结构的查找、树形结构的查找、散列结构的查找及字符串模式匹配,同时分析各个查找方法的查找效率。其中线性结构的查找(静态查找表)主要代表为顺序查找、分块查找和折半查找;树形结构的查找(动态查找表)为二叉排序树、二叉平衡树、B树和B+树;B树和B+树作为本章的难点。对于B树,要求掌握插入、删除和查找的操作过程:对于B+树,仅要求了解其基本概念和性质。 散列结构主要以散列表(哈希表)为代表,应

大家一起进步叭 8661

数据结构与算法(7)-查找

目录 一.查找概论     1.概念:     2.查找表按照操作方式来分有两大种:静态查找表和动态查找表     3.面向查找操作的数据结构称为查找结构 二.顺序表查找     1.顺序查找(Sequential Search):又叫线性查找,是最基本的查找技术     2.顺序表查找算法:  &.

Movle 2057

数据结构-第七章 查找-笔记

目录分块查找存储的结构特点查找过程查找效率分析没用过分块查找,还真没啥印象主要区别在于查找分块时采用的是顺序还是二分,顺序查找不用多说,下面介绍一下比较特殊的二分查找使用二分法查找分块时,一般会出现“查找失败”的情况,但这时一定要在low所指的分块中继续查找。其原因在于二分法查找失败时,最终的low = high + 1,此时所要查找的关键值大小介于high和low所指的元素之间,例如图中的19最终介于high所指向的10和low所指向的20之间,但是这时不应该结束查找,因为按照分块查找的存储结构特点,每个

销夜的博客 425

《数据结构》上机实验(第七章) —树与二叉树Ⅳ

1. 求以孩子兄弟表示法存储的森林的叶子结点数。 算法思想:当森林(树)以孩子兄弟表示法存储时,若结点没有孩子,则它必是叶子,总的叶子结点个数是孩子子树上的叶子数和兄弟子树上的叶结点个数之和。 int Leaves(CSTree t) { static int count = 0; if (t == NULL) return 0; else { if (t->firstchild == NULL) { printf("%c ", t->data); count

Miss Z的博客 1243
上一篇: NewCoder——玛雅人的密码【C语言】
下一篇: 第七章 查找——二分查找
Iron__chēn
博客等级 码龄8年 36粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值