数据结构--二叉树

ops/2025/1/16 21:10:48/

目录

有序二叉树:

平衡二叉树:

234树:

红黑树

红黑树特点:

为什么红黑树是最优二叉树?

哈夫曼树和哈夫曼编码


有序二叉树:

平衡二叉树:

在有序二叉树的基础上得来的,且左右子树的高度差绝对值不能超过1.

调整策略:

1、LL型调整策略

注意要找造成不平衡节点的最近的不平衡节点

2、RR型

10插入后,5是不平衡的节点,往右走两步。中间节点为8

3、LR型

转换为LL型

4、RL型

平衡二叉树太耗费资源,引入了红黑树。红黑树的基础是234树

234树:

变成四个节点的后,取中间节点向上走一层,连接两端

红黑树

二节点用黑色表示,三节点用黑红,四节点用黑红红表示,然后按照234树变成红黑树。

红黑树特点:

1、红黑树只有红色和黑色两种颜色

2、根节点一定是黑色的,

3、叶子节点是存在的,统一为黑色

4、如果一个节点的值是红色的那么他的子节点的值一定是黑色的

5、从根节点到任意一个叶子节点,路径上的黑色节点数目相同。(黑色节点数就是234数的高度)

为什么红黑树是最优二叉树?

最长链不超过最短链的二倍

时间复杂度比有序二叉树更稳定,平衡调整更简单

哈夫曼树和哈夫曼编码

自定义变长编码表容易引起歧义


http://www.ppmy.cn/ops/150639.html

相关文章

lqb.key按键全套

#include "stc15.h" #define FOSC 11059200L //#define T1MS (65536-FOSC/1000) //1T模式 #define T1MS (65536-FOSC/12/1000) //12T模式typedef unsigned char u8; typedef unsigned int u16; typedef unsigned long u32;#define LY 1 //…

C# 多线程 Task TPL任务并行

先总结一下 之前发展过程的要点 1: 为了保证多线程正确顺序执行 线程同步 2: 为了节省操作系统线程资源 线程池 异步 方式管理 正常来讲 使用这俩个要点 进行使用 多线程可以满足开发使用需求 但是 新的问题产生了 那就是 多个异步操作 需要编写大量的代…

【认识油管头部频道】ep3 “PewDiePie”——游戏内容

PewDiePie(本名 Felix Kjellberg)是世界上最知名的 YouTuber 之一,以其独特的内容风格、个性魅力和对观众的深刻理解而闻名。他的成功是多方面因素共同作用的结果,以下是 PewDiePie 火爆的主要原因: 1. 游戏领域的早期…

MyBatis——XML映射文件

在MyBatis中,既可以通过注解的方式配置SQL语句,也可以通过XML映射文件的方式配置SQL语句。对于简单的SQL语句建议直接通过注解的方式配置SQL语句: Delete("delete from user where id#{id}") Integer deleteById(Integer id);但是…

40,【6】CTFHUB WEB SQL MYSQL数据库

进入靶场 12时回显异常,可知是整数型注入 order by判断字节数 使用order by 判断出字节数为3 使用union select 寻找回显点 database爆出了库名 表名有2个,news和qctclblljo,看不出来flag在哪个文件里,都看看 第2个更可疑一点,&a…

《深入浅出HTTPS​​​​​​​​​​​​​​​​​》读书笔记(28):DSA数字签名

《深入浅出HTTPS​​​​​​​​​​》读书笔记(28):DSA数字签名 对称加密算法有很多算法,标准算法是RSA机密算法,数字签名技术也有一个标准DSS(Digital Signature Standard),其标准…

npm更换淘宝镜像源

新的淘宝npm镜像源地址:https://registry.npmmirror.com npm更换淘宝镜像源 npm config set registry https://registry.npmmirror.com 然后再执行以下操作查看是否成功 npm config get registry 如果没安装过淘宝镜像源的,则直接安装 npm install -…

《零基础Go语言算法实战》【题目 4-7】实现链表的排序

《零基础Go语言算法实战》 【题目 4-7】实现链表的排序 请用 Go 语言实现合并 K 个排序的链表并将其作为一个排序链表返回。 【解答】 ① 思路。 借助分治算法的思想,递归对比两个链表中的每个元素的值的大小,然后将 K 个有序链 表两两合并即可。 …