【考研数据结构代码题1】二叉搜索树的插入与查找
题目:请用C语言写出二叉树的二叉链表结构,并编写一个函数在二叉搜索树中可以搜索给定的关键字
难度:★
二叉树的二叉链表结构
#include<stdio.h>
#include<stdlib.h>
//二叉树的结点结构
typedef struct Node{int data;//存放结点数据struct Node *left;//左子树指针struct Node *right;//右子树指针
}Node;
在二叉搜索树中搜索指定关键字(递归方式)
算法思路:根据二叉排序树的特性,左<根<右,进行递归遍历查找
Node *searchNode(Node* root,int key){//递归出口if(root==NULL||root->data==key){return root;//返回存储待查找关键字的节点 } else if(key<root->data){return searchNode(root->left,key); } else {return searchNode(root->right,key); }
}
在二叉搜索树中搜索指定关键字(非递归方式)
Node *searchNode(Node* root,int key){//若树为空或者关键字等于根结点值则结束循环 while(root!=NULL&&key!=root->data){if(key<root->data){root=root->left;} else{root=root->right;}} return root;
}

补充
1.二叉搜索树(二叉排序树、二叉查找树、BST树)的特性
二叉排序树又称为二叉查找树,它是一种特殊的二叉树。
其定义为:二叉树排序树或者是一棵空树,或者是具有如下性质的二叉树:
(1)若它的左子树非空,则左子树上所有结点的值均小于根结点的值;
(2)若它的右子树非空,则右子树上所有结点的值均大于(或大于等于)根结点的值;
(3)它的左右子树也分别为二叉排序树。
这是一个递归定义。
2.二叉搜索树的插入(递归方式)
算法思路: 先判断树是否为空树,若为空树则需要将第一个插入的结点作为根结点,利用C语言中的malloc函数申请一个结点内存空间,并初始化左右子树指针为空;若不为空树则根据二叉排序树的特性:左<根<右 进行递归地插入。注意:参数列表中Node*代表数的结点指针类型,&root表示取出当前结点的地址。
//二叉搜索树的插入(递归方式)
void InsertNode(Node* &root,int key){//原始树为空则新插入的结点作为根结点 if(root==NULL){root=(Node*)malloc(sizeof(Node));root->data=key;root->left=root->right=NULL;}else if(key<root->data){InsertNode(root->left,key);}else {InsertNode(root->right,key);}
}

3.C语言小知识点:指针类型 * 与取地址符& 的用法

参考文章
C语言中 指针变量 取地址符&的用法 *指针变量名的用法
https://wuyujin.blog.csdn.net/article/details/128752845?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-3-128752845-blog-105318954.235%5Ev38%5Epc_relevant_anti_t3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-3-128752845-blog-105318954.235%5Ev38%5Epc_relevant_anti_t3&utm_relevant_index=6
C语言指针详解
https://blog.csdn.net/liu100m/article/details/90731422?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169901195416800182115107%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169901195416800182115107&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-90731422-null-null.142%5Ev96%5Epc_search_result_base2&utm_term=C%E8%AF%AD%E8%A8%80%E6%8C%87%E9%92%88&spm=1018.2226.3001.4187
相关文章:
【考研数据结构代码题1】二叉搜索树的插入与查找
题目:请用C语言写出二叉树的二叉链表结构,并编写一个函数在二叉搜索树中可以搜索给定的关键字 难度:★ 二叉树的二叉链表结构 #include<stdio.h> #include<stdlib.h> //二叉树的结点结构 typedef struct Node{int data;//存放结…...
世微 平均电流型降压恒流驱动器 电动摩托车LED灯小钢炮驱动IC AP5218
1,来源:深圳市世微半导体有限公司 2,产品描述 AP5218 是一款 PWM工作模式, 高效率、外 围简单、内置功率管,适用于5V~100V输入的高 精度降压 LED 恒流驱动芯片。输出最大功率可达 15W,最大电流 1.5A。AP5…...
docker 下安装mysql8.0
在docker中查询mysql镜像 PS C:\Users\admin> docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation……...
Android MVI架构的深入解析与对比
什么是MVI? M:model,此处的model并不是传统的数据模块,它是指用来存储视图状态UI State的一个模块 。比如请求数据时的loading、请求失败的提示页面等UI层面的变化状态。 V:view,视图模块 I:…...
达梦数据库表空间管理常用SQL
达梦数据库表空间管理常用SQL 表空间容量分析表空间创建与扩容 查看数据库状态: select name,instance_name,status$,mode$ from v$instance; --mode$显示Primary为主库select name,status$,role$ from v$database; --status$:1 启动,2 启动…...
Flutter 组件集录 | InheritedNotifier 内置状态管理组件
theme: cyanosis 1. 前言 在上一篇 《Flutter 知识集锦 | 监听与通知 ChangeNotifier》 中,我们介绍了 ChangeNotifier 对象通知监听者的能力。并通过一个简单的模拟下载进度案例,介绍了它的使用方式: | 案例演示 | 监听-通知关系 | | --- | …...
NOIP2023模拟10联测31 涂鸦
题目大意 有一面由 n m n\times m nm个格子组成的墙,每个格子要么是黑色,要么是白色。你每次将会进行这样的操作:等概率随机选择一个位置 ( x , y ) (x,y) (x,y)和一个颜色 c c c(黑色或白色),࿰…...
【Python基础知识一】基本语法、常用数据类型等
Python基础知识: 1 标识符(Identifier)2 关键字/保留字(Keyword)3 引号4 编码5 输入输出6 行与缩进7 多行语句8 注释9 数据类型9.1 数字(Number)类型9.2 变量(variate)9.3 字符串(St…...
听听ChatGPT对IT行业的发展和就业前景的看法
🌈个人主页: Aileen_0v0🔥系列专栏:PYTHON学习系列专栏💫"没有罗马,那就自己创造罗马~" 目录 (1)判断素数 写法1: 写法2: (2)计算1-100的偶数之和 写法1: 写法2: (3)计算1-100的奇数之和 (4)多层循环 IT行业哪个方向比较…...
〖程序员的自我修养 - 认知剖析篇⑤〗- 选择前端还是后端?
人之所以会觉得迷茫,本质上是欠缺对自己的一个控制力、识别庞杂信息、去伪存真的独立思考与认知能力。 说明:该文属于 程序员的自我修养 专栏,购买任意白宝书体系化专栏可加入易编程社区,早鸟价订阅模式除外。福利:加入社区的小伙伴们,除了可以获取博主所有付费专栏的阅读…...
Rust语言初步
文章目录 安装与测试变量条件语句和函数数组和元组循环 安装与测试 可以从官网直接下载。下载rustup-init并运行之后,会打开命令行,选1默认安装,然后不出意外就安装完了。 安装完成后按照惯例查看一下版本,如不报错就算成功。 …...
BIMILLC算法源码解析
论文链接:https://arxiv.org/abs/1607.02533 源码出处:https://github.com/Harry24k/adversarial-attacks-pytorch/tree/master 源码 import torch import torch.nn as nnfrom ..attack import Attackclass BIM(Attack):r"""BIM or iter…...
Android STR研究之五
前言: 在前四篇中初步介绍了开机流程,STR流程,唤醒流程,这里讲下STR的问题点 Android STR研究之一-CSDN博客 Android STR研究之二-CSDN博客 Android STR研究之三-CSDN博客 Android STR研究之四-CSDN博客 问题1:进入STR…...
python3+requests接口自动化测试实例详细操作
前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的…...
在Node.js中,什么是中间件(middleware)?它们的作用是什么?
聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...
当函数参数为一级指针,二级指针
当函数参数为一级指针,二级指针 在讲述内容之前,先讲四点重要知识 1.当传入参数时,函数形参会立即申请形参的内存空间,函数执行完毕后,形参的内存空间立即释放掉。 1.指针是存放其他变量地址的变量。指针有自己的内…...
Hydra post登录框爆破
文章目录 无token时的Hydra post登录框爆破带Token时的Hydra post登录框爆破 无token时的Hydra post登录框爆破 登录一个无验证码和token的页面,同时抓包拦截 取出发送数据包:usernameadb&password133&submitLogin 将用户名和密码替换 userna…...
阿里云推出AI编程工具“通义灵码“;生成式 AI 入门教程 2
🦉 AI新闻 🚀 阿里云推出AI编程工具"通义灵码",支持多种语言及实时续写功能 摘要:阿里云推出了一款名为"通义灵码"的AI编程工具,支持多种主流编程语言,包括Java、Python、Go等。该工…...
使用Qt Installer Framework将自己的程序打包成安装包程序
使用Qt Installer Framework将自己的程序打包成安装包程序 制作安装包程序就是将自己的程序打包成一个可执行的exe,双击之后进行安装。 1. 在制作安装包程序之前需要安装qt官方提供的安装包制作工具Qt Installer Framework 去qt官方网址,下载对应的 Q…...
逆袭Flutter? Facebook 发布全新跨平台引擎 Hermes!
Facebook 于前日发布了新的 JavaScript 引擎:Hermes,专注于提高 React Native 应用的性能,并且在市面上那些内存较少、存储速度较慢且计算能力低下的移动设备上都有良好的表现。但是不是为了追赶Flutter?这块作者没有说明。 移动应…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
