数据结构——第五章:树与二叉树

news/2025/3/30 7:22:12/

目录

一、(⭐⭐)

二、二叉(⭐⭐⭐)

三、线索二叉(⭐⭐⭐)

四、与森林(⭐⭐)

五、哈夫曼与并查集(⭐⭐⭐)


一、(⭐⭐)

选择题:数形结合(特殊图法,能满足所有的必须也要满足特殊图)

1、结点与的高度、深度、层次。

  • 的高度(深度):中结点的最大层数。
  • 结点的高度:以该结点为根的子的高度。
  • 结点的深度:节点所在的层次数。

2、结点和的度:

  • 结点的度:该结点的孩子个数。
  • 的度:中所有结点的最大度数。
  • 度为0的结点就是叶子节点(终端节点),度大于0为分支节点。

1、的性质:

  • 最少节点、最大深度往往涉及单支
  • 最多结点、最低深度往往涉及满
  • 适用于元素之间具有分支层次的数据。

二、二叉(⭐⭐⭐)

1、二叉的性质:

  • 结点数=所有结点度数之和+1
  • n0=1+n2(推广:n0=1 + n2 + 2*n3 + 3*n4 ....... (i-1)*ni)
  • 可为空,但图不可为空图(单支特别容易考)。

2、完全二叉

  • 最多只有一个度为1的结点,且只有左孩子(除去最后一层其余都满)
  • 若i<=n/2,则为分支结点,若大于则为叶子节点。
  • 例:若第六层有叶子节点,第七层可能也有。
  • 完全二叉一定是平衡二叉
  • 完全二叉高度为lg(n+1)(上取整)lgn+1(下取整)

3、满二叉

  • 每层都是满结点。

4、二叉排序

  • 左<根<右(同层递增)

5、平衡二叉

  • 任意结点左右子高度绝对值之差不超过1。

 1、二叉的链式存储结构:

  • 二叉链表n个结点:n+1个空链域,2n个指针域,n个数据域。
  • 二叉用三叉链表(左、右、双亲):空指针n+2,画图更直观。
  • 三叉用三叉链表:简单画图去吧,更直观。
  • 删除二叉链表所有结点并释放存储空间,后序最合适。(先删除左右孩子,再释放空间最后删除根结点)

2、二叉的遍历:

  • 后序遍历仍需要栈支持(右子紧挨根结点的点,无法指向根节点)
  • 先序遍历即给出入栈顺序,根据卡特兰数:1÷(n+1)×(2n与n的组合数)

三、线索二叉(⭐⭐⭐)

1、线索二叉

  • 二叉是一种逻辑结构线索二叉是加上线索之后的链表结构,即是一种存储结构(或物理结构)
  • 先序线索二叉找不到先序前驱,后序线索二叉找不到后序后继承。
  • ltag/rtag:0表示左孩子,1表示前驱。

四、与森林(⭐⭐)

1、与森林的对应关系:

  • 前序遍历二者相等
  • 中序遍历森林等于二叉的后序遍历
  • 后续遍历森林等于二叉的中序遍历

五、哈夫曼与并查集(⭐⭐⭐)

1、哈夫曼

  • 固定长度编码:所有字符均在叶子结点。
  • 可变长度编码(哈夫曼编码):根据频次进行映射,起到压缩编码的作用
  • 哈夫曼:左0右1,贪心策略,只有度为2和0的结点没有度为1的结点,总结点为2n-1,新建的结点为n-1。

2、并查集:

  • 通常用的双亲法表示并查集的存储结构
  • 时间复杂度O(lgn)~O(n)。(单情况下最差)

http://www.ppmy.cn/news/1583518.html

相关文章

.gitattributes与git lfs

.gitattributes .gitattributes 是 Git 项目的一个配置文件&#xff0c;用来定义文件在 Git 中的行为。它可以控制 Git 如何处理特定类型的文件&#xff0c;比如合并策略、换行符、文本编码、diff 显示方式、LFS&#xff08;Git Large File Storage&#xff09;等内容。 &…

【2025】基于springboot+vue的医院在线问诊系统设计与实现(源码、万字文档、图文修改、调试答疑)

基于Spring Boot Vue的医院在线问诊系统设计与实现功能结构图如下&#xff1a; 课题背景 随着互联网技术的飞速发展和人们生活水平的不断提高&#xff0c;传统医疗模式面临着诸多挑战&#xff0c;如患者就医排队时间长、医疗资源分配不均、医生工作压力大等。同时&#xff0c;…

Flutter完整开发实战详解(一、Dart语言和Flutter基础)

前言 在如今的 Flutter 大潮下&#xff0c;本系列是让你看完会安心的文章。本系列将完整讲述&#xff1a;如何快速从0开发一个完整的 Flutter APP&#xff0c;配套高完成度 Flutter 开源项目 GSYGithubAppFlutter。同时也会提供一些 Flutter 的开发细节技巧&#xff0c;并针对…

Rust Web 开发新选择:探索 Hyperlane 轻量级 HTTP 服务器框架

Rust Web 开发新选择&#xff1a;探索 Hyperlane 轻量级 HTTP 服务器框架 在 Web 开发领域&#xff0c;Rust 以其高性能和内存安全性逐渐受到关注。而在众多 Web 框架中&#xff0c;hyperlane 作为一款轻量级、高性能的 HTTP 服务器框架&#xff0c;正悄然成为 Rust 生态中的明…

基于BERT的序列到序列(Seq2Seq)模型,生成文本摘要或标题

数据预处理&#xff1a; 使用DataGenerator类加载并预处理数据&#xff0c;处理变长序列的padding。输入为内容&#xff08;content&#xff09;&#xff0c;目标为标题&#xff08;title&#xff09;。 ​模型构建&#xff1a; 基于BERT构建Seq2Seq模型&#xff0c;使用交叉熵…

【蓝桥杯每日一题】3.25

&#x1f3dd;️专栏&#xff1a; 【蓝桥杯备篇】 &#x1f305;主页&#xff1a; f狐o狸x “OJ超时不是终点&#xff0c;是算法在提醒你该优化时间复杂度了&#xff01;” 目录 3.25 差分数组 一、一维差分 题目链接&#xff1a; 题目描述&#xff1a; 解题思路&#xff1a;…

Unity Shader编程】之复杂光照

在Unity Shader的LightMode标签中&#xff0c;除了前向渲染和延迟渲染外&#xff0c;还支持多种渲染模式设置。以下是主要分类及用途&#xff1a; 一、核心渲染路径模式 前向渲染相关 ForwardBase 用于基础光照计算&#xff0c;处理环境光、主平行光、逐顶点/SH光源及光照贴图。…

Windows命令提示符(CMD) 中切换目录主要通过 cd(Change Directory)命令实现

在 Windows命令提示符&#xff08;CMD&#xff09; 中切换目录主要通过 cd&#xff08;Change Directory&#xff09;命令实现。以下是详细的切换目录方式及常见用法示例&#xff1a; 使用技巧&#xff1a; 1.在文件夹的地址栏&#xff0c;直接输出cmd 即可跳转到当前的文档。…