数据结构——二叉排序树

懒猫老师-数据结构-(58)二叉排序树的删除(二叉查找树)_哔哩哔哩_bilibili

概念

(1)若它的左子树不空,则左子树上所有结点的值均小于根结点的值;

(2)若它的右子树不空,则右子树上所有结点的值均大于根结点的值;

(3)它的左右子树也都是二叉排序树。

通过递归的方法来定义

中序遍历二叉排序树可以得到一个按关键码有序的序列。

操作

创建二叉树

// 定义二叉查找树的节点  
typedef struct Node {  
    int key;  
    struct Node* left;  
    struct Node* right;  
} Node;  
  

插入操作

Node* insert(Node* node, int key) {  
    if (node == NULL) return newNode(key);  
  
    if (key < node->key) {  
        node->left = insert(node->left, key);  
    } else if (key > node->key) {  
        node->right = insert(node->right, key);  
    } 
    return node;  
}  

也可用循环进行多次插入

查找操作

// 查找特定键值  
Node* search(Node* root, int key) {  
    if (root == NULL) {  
        return NULL;  
    }  
  
    if (key == root->key) {  
        return root;  
    }  
  
    if (key < root->key) {  
        return search(root->left, key);  
    }  
  
    return search(root->right, key);  
}  
  

删除操作(重要)

1、删除节点为叶子结点

直接删除

2、被删除的节点只有左子树或只有右子树

3、被删除的节点既有左子树又有右子树

以左子树中最大的节点或右子树中最小的节点替代被删除的节点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/606822.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

顶级开源Kubernetes管理工具有哪些?好用Kubernetes工具推荐

Kubernetes已经成为容器编排领域颠覆性的技术&#xff0c;而充满活力的开源社区是其成功背后的推动力。本文将为大家推荐好用的Kubernetes工具&#xff0c;围绕Kubernetes发展的生态系统的广度和深度。 从自动化和监控到网络和安全性&#xff0c;这些工具为管理容器化应用程序…

Python入门到精通,一个月就够了!前字节大佬超详细系统学习路线

毫无疑问&#xff0c;Python 是当下最火的编程语言之一。 对于许多未曾涉足计算机编程的领域「小白」来说&#xff0c;深入地掌握 Python 看似是一件十分困难的事。 感觉很迷茫&#xff1f;学了一段时间还是不入流&#xff1f;很大一部分原因是因为你没有一个完整的知识体系&…

WebSocket 来单提醒和客户催单功能

一&#xff1a;WebSocket &#xff1a; WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#…

c 双向链表

图片 #include <stdio.h> #include <stdlib.h> #include <string.h>int main(void){ struct film{char name[20];int id;struct film *pre; //前向指针struct film *next; //后向指针 };struct film *headNULL;struct film *ls,*lspre,*work;in…

《幻兽帕鲁》怎么建立服务器,一文学会

你是否厌倦了《幻兽帕鲁》游戏中的公共服务器&#xff0c;想要与好友们共同打造一个专属的游戏世界&#xff1f;本文将为你提供一份极简的服务器搭建指南&#xff0c;让你仅需轻点三次鼠标&#xff0c;3秒轻松开服&#xff0c;与朋友们一同开启“抓帕鲁”的冒险之旅&#xff01…

挖掘线下潜力:Xinstall为App推广开辟新渠道

在移动互联网时代&#xff0c;App的推广成为了企业营销的重要环节。然而&#xff0c;线上推广渠道日益拥堵&#xff0c;成本不断攀升&#xff0c;让许多开发者开始寻找线下推广的新机会。此时&#xff0c;Xinstall作为国内专业的App全渠道统计服务商&#xff0c;为开发者提供了…

Bert 实现情感分析任务

BERT Bert &#xff08;Bidirectional Encoder Representations from Transformers&#xff09;预训练模型是 Google 2018开源的自然语言模型&#xff0c;主要有以下特点。 像它名字一样&#xff0c;BERT最显著的特点是其能够为文本中的每个标记考虑双向上下文。与传统的基于…

STM32G030C8T6:EEPROM读写实验(I2C通信)

本专栏记录STM32开发各个功能的详细过程&#xff0c;方便自己后续查看&#xff0c;当然也供正在入门STM32单片机的兄弟们参考&#xff1b; 本小节的目标是&#xff0c;系统主频64 MHZ,采用高速外部晶振&#xff0c;实现PB11,PB10 引脚模拟I2C 时序&#xff0c;对M24C08 的EEPRO…

面试常见 | 项目上没有亮点,如何包装?

很多技术人在公司用的老技术&#xff0c;而且很多都是搬业务代码且做枯燥乏味的CRUD&#xff0c;在面试提交简历或做自我介绍的时候并不突出&#xff0c;这种情况&#xff0c;如何破局&#xff1f; 首先不管你做的啥项目&#xff0c;全世界不可能只有你自己在做&#xff0c;比…

【MATLAB源码-第52期】基于matlab的4用户DS-CDMA误码率仿真,对比不同信道以及不同扩频码。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 DS-CDMA (Direct Sequence Code Division Multiple Access) 是一种多址接入技术&#xff0c;其基本思想是使用伪随机码序列来调制发送信号。DS-CDMA的特点是所有用户在同一频率上同时发送和接收信息&#xff0c;但每个用户使…

Leetcode—1396. 设计地铁系统【中等】

2024每日刷题&#xff08;127&#xff09; Leetcode—1396. 设计地铁系统 实现代码 class UndergroundSystem { public:typedef struct Checkin {string startStation;int time;} Checkin;typedef struct Checkout{int tripNum;int totalTime;} Checkout;UndergroundSystem()…

ANSI转义序列

一、ASCII码 ASCII&#xff08;American Standard Code for Information Interchange&#xff0c;美国信息交换标准代码&#xff09;最初的设计是一个7位的字符编码&#xff0c;使用了从0到127的数字来表示字符。这意味着它总共可以表示128个不同的字符。这包括了英文大小写字…

vue+ant-design+formBuiler表单构建器——技能提升——form design——亲测有效

最近看到后端同事在弄一个后台管理系统&#xff0c;额&#xff0c;前端真的是夹缝中生存啊&#xff0c;AI抢饭碗&#xff0c;后端也想干前端的活儿。。。 他用到了表单构建器&#xff0c;具体效果如下: 网上有很多适用于ElementUi和ant-design的form design插件&#xff0c;下…

深度学习Day-16:实现天气预测

&#x1f368; 本文为&#xff1a;[&#x1f517;365天深度学习训练营] 中的学习记录博客 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制] 要求&#xff1a;根据提供的数据集对RainTomorrow进行预测 一、 基础配置 语言环境&#xff1a;Python3.7编译器选择…

CSS伪类选择器

目录 前言&#xff1a; 链接伪类&#xff1a; 用户行为伪类&#xff1a; 元素状态伪类&#xff1a; 结构化伪类&#xff1a; 否定伪类&#xff1a; 目标伪类&#xff1a; 输入伪类&#xff1a; 前言&#xff1a; 在CSS中有一种特殊的选择器&#xff1a;伪类选择器&…

3D翻页电子画册制作零基础制作

随着科技的不断发展&#xff0c;3D翻页电子画册逐渐成为了一种流行的展示方式。它不仅具有丰富的视觉冲击力&#xff0c;还能带来更好的用户体验。如果你是零基础&#xff0c;不用担心&#xff0c;我将为你详细介绍如何制作3D翻页电子画册。让你轻松入门&#xff0c;创作出属于…

DUX 主题 版本:8.2 WordPress主题优化版

主题下载地址&#xff1a;DUX 主题优化版.zip 支持夜间模式、快讯、专题、百度收录、人机验证、多级分类筛选&#xff0c;适用于垂直站点、科技博客、个人站&#xff0c;扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、自动缩略图

【qt】QString字符串

前言&#xff1a; 这节很轻松&#xff0c;大家可以放心食用 ♪(&#xff65;ω&#xff65;)&#xff89; QString目录 一.与cString的区别二.隐式共享三.初始化四.判断是否为空串五.字符串的长度六.添加字符串1.尾加2.任意位置加 七.替换字符串八.修改字符串九.删除字符串1.清…

Elastic 基于 RAG 的 AI 助手:利用 LLM 和私有 GitHub 问题分析应用程序问题

作者&#xff1a;来自 Elastic Bahubali Shetti 作为 SRE&#xff0c;分析应用程序比以往更加复杂。 你不仅必须确保应用程序以最佳状态运行以确保良好的客户体验&#xff0c;而且还必须了解某些情况下的内部工作原理以帮助排除故障。 分析基于生产的服务中的问题是一项团队运动…

EOCR-DS3T-05S电动机保护器 施耐德 EOCR-DS3系列

EOCR-DS3T-05S电动机保护器 施耐德 EOCR-DS3系列型号&#xff1a; EOCR-DS3-05S EOCR-DS3-30S EOCR-DS3-60S EOCR-DS3T-05S EOCR-DS3T-30S EOCR-DS3T-60S 基于MCU&#xff08;微处理器&#xff09;的2CT型产品 ■ 实时处理/高精度 ■ 电流设定范围&#xff1a;05型&#xff1…