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

数据结构-第三节-树与二叉树

一、基本概念:

树:一种非线性结构,除了根外,每个节点有一个前趋,可以有多个后继。

根与子树:上级是根,根引申出来的是子树(子树不是某一个节点)。

节点的度:节点子树的个数。

叶子/分支节点:度为/不为0的节点。

节点层次:根节点层定义为0,其后每往下层加一。

树的高度:树的最大层次。

树的度:在树中所有节点,度的最大值。

森林:多个树的集合。

有序与无序:子树是否有顺序。

二、二叉树:

度为小于等于2的有序树。

满二叉树:对于高度为k,所有层节点数均为最大。

完全二叉树:除了最后一层,节点数均为最大,且最下层节点都集中在该层的最左端。

二叉树的存储:节点类存两个指针,指向左节点与右节点。串 

三、树的存储:

对于树,从上到下,从左到右进行编号和存储。

1.顺序存储:

会对于缺节点的非完全树,会造成空间浪费。

2.链式存储:

双亲表示法:一个节点存有一个指针,指向双亲。

孩子表示法:一个节点存有一个指针,指向孩子的头结点(所有孩子存为链表)
                     所有节点的孩子头结点,组成一个顺序表。

孩子-兄弟表示法:一个节点存有两个指针,指向第一个孩子和下一个兄弟。(好!)

四、树与森林、二叉树的转换:

树的孩子-兄弟表示法,就是二叉树。

森林中,第二棵树,视为第一棵树的兄弟,也可化为二叉树。

五、二叉树的遍历:

递归算法:分为先序,中序,后序(以根为基准的先中后)

六、树的遍历:

1.深度优先遍历:

(1)先根次序遍历:根 -> 第一次子树 -> 第二棵子树。。。

(2)后根次序遍历:第一次子树 -> 第二棵子树。。。 ->根 

2.广度优先遍历:

按层遍历:从左到右遍历完一层,再进入下一层。

七、二叉排序树:

左子树中所有节点值,小于根节点值。

右子树中所有节点值,大于根节点值。

1.查找:小的往左找,大的往右找

2.插入:查找到最后,插入在那里。

注:对二叉树进行中序遍历,得到有序序列。

3.删除:

(1)只有叶子节点:直接删

(2)只有左子树/右子树:下一节点接在自己位置。

(3)左右子树都有:(复杂)

中序遍历,用左/右子树中序遍历最后一个节点,代替自己,并删除那最后一个节点。

八、最优二叉树:霍夫曼编码

详见信息论。

http://www.lqws.cn/news/533251.html

相关文章:

  • GtkSharp跨平台WinForm实现
  • 七天学会SpringCloud分布式微服务——03——Nacos远程调用
  • 01【C++ 入门基础】命名空间/域
  • vue 开启 source-map 后构建速度会很慢
  • LaTeX之中文支持和设置字体的几种方法
  • Docker 入门教程(一):从概念到第一个容器
  • php的案例分析----typecho项目
  • 华为云Flexus+DeepSeek征文|华为云ModelArts搭建Dify-LLM应用开发平台(AI智能选股大模型)
  • 制药行业的精细化管理:GCOM80-2NET自动化解决方案
  • 用pthread_setschedparam设置调度策略
  • Altera PCI IP target设计分享
  • STM32F103ZET6开发板【项目工程创建】+具体实现步骤流程
  • 构建高效字符串编解码系统:Prefix-Token-Suffix三元组方法
  • python pyecharts 数据分析及可视化
  • 创客匠人解析视频号公私域互通逻辑:知识变现的破圈与沉淀之道
  • [特殊字符]推客带货小程序解决方案——0门槛裂变营销,佣金赚不停!
  • 408考研逐题详解:2010年第7题——连通图的边
  • 代码随想录|图论|06岛屿数量(广搜BFS)
  • PhoneRescue 4.3绿色版!解决iPhone数据丢失、系统崩溃等场景
  • 单片机 - STM32F103“复用功能重映射”完整解析:从JTAG释放到TIM重映射实战详解
  • CTF:PHP 多关卡绕过挑战
  • 专注推理查询(ARQs):一种提升大型语言模型指令遵循度、决策准确性和防止幻觉的结构化方法
  • 【攻防篇】解决:阿里云docker 容器中自动启动xmrig挖矿
  • ISP Pipeline(5): Auto White Balance Gain Control (AWB) 自动白平衡
  • 数据结构大项目
  • react - ReactRouter—— 路由传参
  • 【STM32 学习笔记】PWR电源控制
  • Java 大视界 -- 基于 Java 的大数据可视化在智慧城市能源消耗动态监测与优化决策中的应用(324)
  • 【linux】全志Tina配置swupdate工具进行分区打包
  • 《PT100两线制温度测量系统设计:从电路原理到嵌入式实现》