【树与二叉树的转换,哈夫曼树的基本概念】

文章目录

  • 树与二叉树的转换
  • 将二叉树转化为树
  • 森林与二叉树的转化(二叉树与多棵树之间的关系)
  • 二叉树转换为森林
  • 森林的先序遍历
    • 1)先序遍历
    • 2)后序遍历
  • 哈夫曼树的基本概念
  • 森林转换成二叉树(二叉树与多棵树的关系)

树与二叉树的转换

将树转化为二叉树处理,利用二叉树的算法实现对树的操作。
由于树和二叉树都可以用二叉树链表做存储结构,则二叉链表的媒介可以导出与二叉树之间的对应关系。
给定一棵树,可以找到唯一的一棵二叉树与之对应。
在这里插入图片描述
在这里插入图片描述
树变二叉树:兄弟相连留长子。
例如:
①兄弟相连

在这里插入图片描述
②留长子
在这里插入图片描述
在这里插入图片描述

将二叉树转化为树

左孩右右连双亲,去掉原来右孩线。
在这里插入图片描述
在这里插入图片描述

森林与二叉树的转化(二叉树与多棵树之间的关系)

树变二叉根相连
①将各棵树分别转换为二叉树。
②将每棵树的根结点用线相连。
③以第一棵树根结点为二叉树的根,再以根结点为轴心,顺时针旋转,构成二叉树结构。
在这里插入图片描述

二叉树转换为森林

去掉全部右孩线,孤立二叉再还原。
在这里插入图片描述

森林的先序遍历

1)先序遍历

  • 若森林不空,则先访问根结点,然后从左向右的顺序,先遍历根结点的每一棵子树(依次从左至右对森林中的每一棵树进行先根遍历)。
  • 树的先根遍历书序应该和二叉树的先序遍历顺序相同。

2)后序遍历

  • 如果树非空,则按从左往右的顺序,后根遍历根结点的每一棵子树,然后访问根结点。
  • 树的后根遍历顺序应与该树对应二叉树遍历顺序相同。

哈夫曼树的基本概念

  • 路径:从树中的一个结点到另一个结点之间的分支构成这两个结点间的路径。
  • 结点的路径长度:两结点路径上的分支数。
    例如:
    在这里插入图片描述这里表示的是从A结点到H结点的路径,路径长度为4。
  • 树的路径长度:从树根到每一个结点的路径长度之和。记作TL。
    例如:
    在这里插入图片描述
    结点数目相同的二叉树中,完全二叉树的路径长度最短的二叉树。

森林转换成二叉树(二叉树与多棵树的关系)

①将各棵树分别转换为二叉树。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习1【吴恩达】

视频链接:1.5 关于这门课_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1FT4y1E74V?p5&spm_id_frompageDriver&vd_source3b6cdacf9e8cb3171856fe2c07acf498 视频中吴恩达老师所有的话语收录: 机器学习初学者-AI入门的宝典 (ai-start.c…

微信小程序刷新当前页面(亲测有效)

有个小功能点,需要刷新当前页面,搜索了很多地方,发现很多搜索的结果其实并不准确。 有的调用的是this.onLoad方法,有的是调用的是this.onReady方法。其实都不能满足我的要求,其实我就只是想刷新下当前页面,…

for each和for of的区别

forEach方法: forEach是Array对象的方法,可以直接使用。forEach会对数组中的每个元素执行指定的回调函数,但无法在回调函数中使用break或return来中止循环。回调函数接受三个参数:当前遍历的元素值、当前遍历的索引和整个数组本身…

CSDN写博文的128天

起因 为什么要写博文? 写博文是因为当我还是编程小白时,我那会啥也不懂,不懂函数调用,不懂指针,更不懂结构体,别更说Linux,平时不会也没有可以问的人,也幸好有CSDN,遇到…

基于python+TensorFlow+Django卷积网络算法+深度学习模型+蔬菜识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 介绍了TensorFlow在图像识别分类中的应用,并通过相关代码进行了讲解。通过TensorFlow提供的工具和库&am…

电脑小Tip---外接键盘F1-F12快捷键与笔记本不同步

当笔记本外接一款非常好用的静音键盘后,会出现一些问题。例如:外接键盘F1-F12与笔记本不同步。具体一个例子就是,在运行matlab程序时,需要点编辑器—运行,这样就很麻烦,直接运行的快捷键是笔记本键盘上的F5…

SpringGateWay——yml文件配置详解

Spring Gateway 是一个基于 Spring 框架的网关服务,主要作用是将流量路由到不同的微服务中。它的灵活性和可扩展性使它成为构建云原生应用架构的不二之选。 下面是 Spring Gateway 的 yml 文件配置参数详解: spring:cloud: gateway: routes: # 路由相…

SQL SELECT INTO 语句

SQL SELECT INTO 语句 使用 SQL,您可以将信息从一个表中复制到另一个表中。 SELECT INTO 语句从一个表中复制数据,然后将数据插入到另一个新表中。 SQL SELECT INTO 语法 我们可以把所有的列都复制到新表中: SELECT * INTO newtable [IN ex…

使用大型语言模型进行文本摘要

路易斯费尔南多托雷斯 📝 Text Summarization with Large Language Models。通过单击链接,您将能够逐步阅读完整的过程,并与图进行交互。谢谢你! 一、介绍 2022 年 11 月 30 日,标志着机器学习历史上的重要篇章。就在这…

uni.getLocation() 微信小程序 线上获取失败

开发版,体验版,用此方法都可以正确获取定位,但是在小程序的线上,总是获取失败 参考:uni-app微信小程序uni.getLocation获取位置;authorize scope.userLocation需要在app.json中声明permission;小程序用户拒绝授权后重新授权-CSDN博客 uniapp 中的 uni.…

2023年A股借壳上市研究报告

第一章 借壳上市概况 1.1 定义 借壳上市作为一种独特的资本市场操作手法,历来是企业拓展融资渠道和实现市场战略目标的重要途径。具体来说,借壳上市可分为狭义与广义两种模式。在狭义的定义下,借壳上市是指一家已上市的公司的控股母公司&am…

RabbitMQ的 五种工作模型

RabbitMQ 其实一共有六种工作模式: 简单模式(Simple)、工作队列模式(Work Queue)、 发布订阅模式(Publish/Subscribe)、路由模式(Routing)、通配符模式(Topi…

【AHK】自用模板新电脑快捷键自用习惯配置

新电脑第一课先配置快捷键 :: send {backspace} returncapslock:: send {enter} return ;xbutton2::ToolTip,;设置鼠标坐标模式为相对屏幕CoordMode, Mouse, ScreenMouseGetPos, mX0, mY0 , hwndIfWinExist, ahk_id %hwnd%{;获取初始窗口位置WinGetPos, wX0, wY0WinActivate, a…

在Ubuntu上搭建Docker环境

步骤 1: 更新系统 sudo apt update sudo apt upgrade步骤 2: 安装Docker 执行以下命令安装Docker: sudo apt install docker.io步骤 3: 启动Docker服务 启动Docker服务,并将其设置为开机启动: sudo systemctl start docker sudo systemctl…

数据结构与算法【二分查找】Java实现

需求:在有序数组 A 内,查找值target 如果找到返回索引如果找不到返回 -1 前提 给定一个内含 n 个元素的有序数组 A,一个待查值 target 1 设置 i0,jn-1 2 如果 i \gt j,结束查找,没找到 3 设置 m (…

Clickhouse学习笔记(3)—— Clickhouse表引擎

前言: 有关Clickhouse的前置知识详见: 1.ClickHouse的安装启动_clickhouse后台启动_THE WHY的博客-CSDN博客 2.ClickHouse目录结构_clickhouse 目录结构-CSDN博客 Cickhouse创建表时必须指定表引擎 表引擎(即表的类型)决定了&…

GBDT减少模型偏差、随机森林减小模型方差

1、Adaboost算法原理,优缺点: 理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络。对于决策树,Adaboost分类用了CART分类树,而Adaboost回归用了CART回归树。 Adaboost…

git准备名字,邮箱,生成ssh-key

设置全局的用户名字和邮箱 git config --global user.name "zhs" git config --global user.email "test163.com"生成ssh-key ssh-keygen -t rsa -C "zhsubuntu-ssd"-t 来指定密钥类型,这里使用的是rsa -C 来指定在密钥中的一个注释…

数据库安全:Hadoop 未授权访问-命令执行漏洞.

数据库安全:Hadoop 未授权访问-命令执行漏洞. Hadoop 未授权访问主要是因为 Hadoop YARN 资源管理系统配置不当,导致可以未经授权进行访问,从而被攻击者恶意利用。攻击者无需认证即可通过 RESTAPI 部署任务来执行任意指令,最终完…

Transmit :macOS 好用的 Ftp/SFtp 工具

Transmit 是一种功能强大的 FTP/SFTP/WebDAV 客户端软件,是一个 Mac OS X 平台上设计的文件传输软件。它由 Panic(一家以软件工具为主的公司)开发和维护,是一款非常受欢迎且易于使用的软件,而且被广泛认为是 Mac OS X …