当前位置: 首页 > article >正文

掌握二叉搜索树:高效查找与有序遍历

一、先解答上次的思考题对这棵树10 / \ 20 30 \ 40层序遍历10 20 30 40树的高度3二、今天学习目标什么是二叉搜索树 BSTBST 三个核心规则实现查找、插入、中序遍历完整可运行代码三、什么是二叉搜索树 BSTBinary Search Tree带 “查找规则” 的二叉树。三个铁律若左子树不为空左子树所有节点 根节点若右子树不为空右子树所有节点 根节点左、右子树也都是 BST一句话小的放左边大的放右边。特点中序遍历结果一定是递增有序序列查找效率远高于普通链表四、示例 BST5 / \ 3 6 / \ \ 2 4 7中序遍历2 3 4 5 6 7有序五、完整代码BST 查找 插入 中序遍历#include stdio.h #include stdlib.h // BST 节点 struct TreeNode { int data; struct TreeNode *left; struct TreeNode *right; }; // 创建节点 struct TreeNode* createNode(int val) { struct TreeNode* node (struct TreeNode*)malloc(sizeof(struct TreeNode)); node-data val; node-left NULL; node-right NULL; return node; } // 1. 插入 struct TreeNode* insert(struct TreeNode* root, int val) { if (root NULL) { return createNode(val); } if (val root-data) { root-left insert(root-left, val); } else if (val root-data) { root-right insert(root-right, val); } // 相等不插入 return root; } // 2. 查找 struct TreeNode* search(struct TreeNode* root, int key) { if (root NULL || root-data key) { return root; } if (key root-data) { return search(root-left, key); } else { return search(root-right, key); } } // 3. 中序遍历输出有序 void inOrder(struct TreeNode* root) { if (root NULL) return; inOrder(root-left); printf(%d , root-data); inOrder(root-right); } // 主函数测试 int main() { struct TreeNode* root NULL; // 插入数据 int arr[] {5,3,6,2,4,7}; int n sizeof(arr)/sizeof(arr[0]); for (int i 0; i n; i) { root insert(root, arr[i]); } printf(BST 中序遍历有序); inOrder(root); // 查找 4 struct TreeNode* res search(root, 4); if (res ! NULL) { printf(\n找到节点%d, res-data); } else { printf(\n未找到); } return 0; }六、运行结果BST 中序遍历有序2 3 4 5 6 7 找到节点4七、BST 核心总结规则小左大右中序 有序递增查找 / 插入平均复杂度O(log n)最坏退化成链表O(n)八、今日小练习依次插入10 7 15 3 9 12 18输出中序遍历结果查找 9 是否存在答案中序3 7 9 10 12 15 18查找 9存在

相关文章:

掌握二叉搜索树:高效查找与有序遍历

一、先解答上次的思考题对这棵树:10/ \20 30\40层序遍历:10 20 30 40树的高度:3二、今天学习目标什么是 二叉搜索树 BSTBST 三个核心规则实现:查找、插入、中序遍历完整可运行代码三、什么是二叉搜索树 BST?Binary…...

CPU占用率过高排查步骤

CPU占用率过高排查指南:快速定位系统瓶颈 当电脑突然变卡、风扇狂转,很可能是CPU占用率过高导致的。这种情况不仅影响工作效率,还可能隐藏着病毒、软件冲突或硬件问题。本文将介绍一套系统化的排查步骤,帮助你快速定位问题根源。…...

【Vscode】Windows 7下Remote-SSH插件报错排查与SSH手动安装指南

1. Windows 7下Remote-SSH插件报错问题解析 最近有不少Windows 7用户反馈,在使用Vscode的Remote-SSH插件时遇到了"An SSH installation couldnt be found"的报错。这个问题的根源其实很简单:Windows 7系统默认没有预装SSH客户端。作为一个长期…...

BiliTools终极指南:2026年跨平台B站资源下载解决方案

BiliTools终极指南:2026年跨平台B站资源下载解决方案 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools 你…...

无网环境方案:OpenClaw离线调用SecGPT-14B的实践

无网环境方案:OpenClaw离线调用SecGPT-14B的实践 1. 为什么需要离线AI助手 在网络安全和涉密机构的工作场景中,数据安全永远是第一位的。我最近参与了一个特殊项目,需要在完全断网的环境下部署AI助手,用于自动化安全巡检和日志分…...

自动化内容审核:OpenClaw+Qwen3-4B-Thinking搭建个人防火墙

自动化内容审核:OpenClawQwen3-4B-Thinking搭建个人防火墙 1. 为什么需要个人内容防火墙 作为一个长期活跃在社交媒体平台的内容创作者,我最近遇到了一个棘手的问题。某天深夜发布的一条科普视频,因为背景音乐中出现了某段敏感旋律&#xf…...

CustomTkinter:如何用Python轻松打造现代化桌面应用界面

CustomTkinter:如何用Python轻松打造现代化桌面应用界面 【免费下载链接】CustomTkinter A modern and customizable python UI-library based on Tkinter 项目地址: https://gitcode.com/gh_mirrors/cu/CustomTkinter 厌倦了传统Tkinter老旧的界面风格&…...

如何快速掌握MuseTalk:实时高质量AI唇同步的完整实践指南

如何快速掌握MuseTalk:实时高质量AI唇同步的完整实践指南 【免费下载链接】MuseTalk MuseTalk: Real-Time High Quality Lip Synchorization with Latent Space Inpainting 项目地址: https://gitcode.com/gh_mirrors/mu/MuseTalk MuseTalk是一款由腾讯音乐娱…...

BEYOND REALITY Z-Image保姆级教程:5分钟部署,零基础生成高清人像

BEYOND REALITY Z-Image保姆级教程:5分钟部署,零基础生成高清人像 1. 前言:为什么选择BEYOND REALITY Z-Image? 如果你正在寻找一款能够生成专业级写真人像的AI工具,BEYOND REALITY Z-Image可能是目前最值得尝试的选…...

YOLOv8与Cosmos-Reason1-7B的联合应用:智能视觉推理系统

YOLOv8与Cosmos-Reason1-7B的联合应用:智能视觉推理系统 1. 场景引入:当视觉检测遇上语义理解 你有没有遇到过这样的情况:监控摄像头检测到了一个人,但不知道他在干什么;或者自动驾驶系统识别出了车辆,却…...

轻量级跨平台C++ GUI框架EUI在Ubuntu24上初试

EUI详见以下页面: https://github.com/sudoevolve/EUI 1 在Ubuntu24.04上部署需要做的准备工作 1.1 从Github拉源码 git clone https://github.com/sudoevolve/EUI.git1.2 为EUI准备所需的库 以为我的Ubuntu24.04装的是毛坯系统,一开始用cmake构建的…...

3天打造个性化音乐服务:KuGouMusicApi全场景开发指南

3天打造个性化音乐服务:KuGouMusicApi全场景开发指南 【免费下载链接】KuGouMusicApi 酷狗音乐 Node.js API service 项目地址: https://gitcode.com/gh_mirrors/ku/KuGouMusicApi KuGouMusicApi是一套基于Node.js构建的酷狗音乐API服务(应用程序…...

Cursor Free VIP技术解析:突破AI编程助手限制的深度指南

Cursor Free VIP技术解析:突破AI编程助手限制的深度指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your t…...

4步实现FanControl中文配置:让风扇调节效率提升60%

4步实现FanControl中文配置:让风扇调节效率提升60% 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fa…...

智能车浅谈——抗干扰技术硬件篇

文章目录前言干扰什么是干扰干扰窜入的主要途径干扰的分类硬件抗干扰技术控制系统的电源保护技术输入/输出传输线的抗干扰措施I/O接口的抗干扰措施接地技术总结智能车系列文章汇总前言 前面使用计算机控制技术简单分析了控制规律和过程通道,今天接着记录一下有关抗…...

智能车浅谈——控制规律篇

文章目录前言计算机控制系统常用控制规律PID控制比例(P)控制器比例积分(PI)控制器比例积分微分(PID)控制位置式PID增量式PID数字PID控制算法的改进PID参数整定小结串级控制模糊控制智能车系列文章汇总前言 之前已经记录了一些有关…...

智能车浅谈——电机控制篇

文章目录前言运动控制系统被控对象执行机构控制器反馈环节M法测速:T法测速小结直流调速系统桥式可逆PWM变换器(1)正向运行(2)反向运行总结智能车系列文章汇总前言 之前借用自动控制原理对智能车的方向控制做了一个简单…...

爬虫实践——selenium、bs4

目录 一、浏览器的一般设置 二、打开网页并获取网页源码的方式 1、基于requests库 2、基于urlib库 3、基于selenium 三、HTML解析 1、BeautifulSoup 2、Selenium动态渲染爬虫:模拟动态操作网页,加载JS(webdriver) 1) 8种find_element定位元素的方法: 2)frame、window切换:…...

JavaScript实现单词首字母大写的方法集锦

1、for循环实现之 var a Hi, my name\s Han Meimei, a SOFTWARE engineer; //for循环 function titleCase(s) { var i, ss s.toLowerCase().split(/\s/); for (i 0; i < ss.length; i) { ss[i] ss[i].slice(0, 1).toUpperCase() ss[i].slice(1); } return ss.j…...

STM32 Modbus通信学习笔记——通信流程

文章目录前言Modbus协议硬件连接基于RS485的Modbus通信Modbus拓扑结构Modbus通信流程Modbus主机帧结构传输方式RTU传输方式ASC传输方式数据帧格式ASCII 帧RTU 帧设备地址&#xff08;找谁&#xff09;功能码&#xff08;干什么&#xff09;校验CRC-16&#xff08;循环冗余错误校…...

蓝牙技术基础知识

文章目录概述1、Basic Rate &#xff0d;经典蓝牙2、Low Energy&#xff08;LE&#xff09;几个常用的蓝牙规范&#xff1a;A2DPProfile 汇总概述 在网络上收集的一些资料&#xff0c;做一下汇总&#xff0c;方便自己查阅和学习。 作为一种通用的无线通信技术&#xff0c;规范…...

体系结构论文(九十九):Large Language Models (LLMs) for Electronic Design Automation (EDA)

Large Language Models (LLMs) for Electronic Design Automation (EDA) 25SOCC这是一篇什么类型的文章这不是一篇提出单一新算法、单一新 benchmark 或单一系统的论文&#xff0c;而是一篇关于“LLM 如何进入 EDA 全流程”的综述/特邀 session 论文。它想做的事情很明确&#…...

OpenClaw备份方案:Qwen3.5-9B驱动的自动化文件同步

OpenClaw备份方案&#xff1a;Qwen3.5-9B驱动的自动化文件同步 1. 为什么需要AI驱动的文件备份方案 上周我的移动硬盘突然罢工&#xff0c;导致三个月的项目文档全部丢失。这次惨痛经历让我意识到&#xff1a;传统备份方案存在两个致命缺陷。首先&#xff0c;手动备份依赖记忆…...

基于springboot林业资源管理系统设计与实现_2595688s_c014

前言 随着全球生态环境保护意识的增强&#xff0c;林业资源管理作为生态保护与可持续发展的重要环节&#xff0c;其信息化、智能化水平直接影响管理效率与决策科学性。传统林业管理依赖人工巡查、纸质记录&#xff0c;存在数据更新滞后、信息孤岛、资源监管困难等问题。基于Spr…...

打卡信奥刷题(3086)用C++实现信奥题 P7096 [yLOI2020] 泸沽寻梦

P7096 [yLOI2020] 泸沽寻梦 题目背景我应是泸沽烟水里的过客&#xff0c; 孑然弹铗&#xff0c;划天地开阖。 邂逅过的&#xff0c;梦醒之余&#xff0c; 却忘了该如何洒脱。——银临《泸沽寻梦》 题目描述南有仙地&#xff0c;名曰摩梭&#xff0c;摩梭有湖&#xff0c;泸沽是…...

打卡信奥刷题(3085)用C++实现信奥题 P7095 [yLOI2020] 不离

P7095 [yLOI2020] 不离 题目背景乱玄黄时序&#xff0c;探风林实虚。 我要你共我奇谈怪趣。 任日月斑斓&#xff0c;待春秋兴残。 我要我们有聚无散。——银临《不离》 题目描述 这道题目来自 zxy 哔哔&#xff0c;咕咕让哔哔选一首歌作为题目名&#xff0c;但是哔哔说没有想好…...

打卡信奥刷题(3084)用C++实现信奥题 P7091 数上的树

P7091 数上的树 题目背景 本题自动开启 O2 优化&#xff0c;时间限制 2s。 题目描述 您需要构造一棵二叉树&#xff0c;根节点权值为 nnn&#xff0c;每个节点都有 222 个或 000 个儿子&#xff0c;且满足如下限制&#xff1a; 若该点有两个儿子&#xff0c;该点权值需等于两个…...

Pretext:值得关注的文本排版引擎涎

一、语言特性&#xff1a;Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一&#xff0c;就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...

Awoo Installer:Switch游戏安装的终极解决方案,告别格式兼容烦恼

Awoo Installer&#xff1a;Switch游戏安装的终极解决方案&#xff0c;告别格式兼容烦恼 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer 还在为Swi…...

Access VBA 生成二维码的两种方式与中文编码处理

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...