数据结构:树的存储结构(孩子兄弟表示法,树和森林的遍历)

news2024/11/18 9:35:37

目录

  • 1.树的存储结构
    • 1.双亲表示法(顺序存储)
      • 1.优缺点
    • 2.孩子表示法(顺序+链式存储)
    • 3.孩子兄弟表示法(链式存储)
    • 4.森林与二叉树的转换
  • 2.树的遍历
    • 1.先根遍历
    • 2.后根遍历
    • 3.层序遍历
  • 3.森林的遍历
    • 1.先序遍历
    • 2.中序遍历

1.树的存储结构

1.双亲表示法(顺序存储)

使用数组,每个结点中保存指向双亲的“指针”。

例如:
在这里插入图片描述

在这里插入图片描述

1.优缺点

①优点:查指定结点的双亲很方便。
②缺点:查指定结点的孩子只能从头遍历

2.孩子表示法(顺序+链式存储)

顺序存储各个节点,每个结点中保存孩子链表头指针。
找孩子方便,找双亲不方便

在这里插入图片描述

3.孩子兄弟表示法(链式存储)

使用二叉链表实现,左兄弟,右孩子。

4.森林与二叉树的转换

森林是m (m≥0)棵互不相交的树的集合。
①森林和二叉树的转化:也就是“左孩子右兄弟”,各个树的根节点视为兄弟关系。

2.树的遍历

1.先根遍历

若树非空,先访问根结点,再依次对每棵子树进行先根遍历
树的先根遍历序列与这棵树相应二叉树的先序序列相同。

在这里插入图片描述

2.后根遍历

若树非空,先依次对每棵子树进行后根遍历,最后再访问根结点。
树的后根遍历序列与这棵树相应二叉树的中序序列相同。

在这里插入图片描述

3.层序遍历

队列实现(广度优先遍历):
①若树非空,则根节点入队
②若队列非空,队头元素出队并访问,同时将该元素的孩子依次入队
③重复②直到队列为空

3.森林的遍历

1.先序遍历

若森林为非空,则按如下规则进行遍历:
①访问森林中第一棵树的根结点。
②先序遍历第一棵树中根结点的子树森林。
③先序遍历除去第一棵树之后剩余的树构成的森林。

效果等同于依次对各个树进行先根遍历

2.中序遍历

若森林为非空,则按如下规则进行遍历:
①中序遍历森林中第一棵树的根结点的子树森林。
②访问第一棵树的根结点。
③中序遍历除去第一棵树之后剩余的树构成的森林。

效果等同于依次对各个树进行后根遍历

在这里插入图片描述

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

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

相关文章

汉明距离(Java)

两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y,计算并返回它们之间的汉明距离。 方法1:使用内置函数 class Solution {public int hammingDistance(int x, int y) {return Integer.bitCount(x ^ y);} }方法2:移位实…

Flutter:改变手机状态栏颜色,与appBar状态颜色抱持一致

前言 最近在搞app的开发,本来没怎么注意appBar与手机状态栏颜色的问题。但是朋友一说才注意到这两种的颜色是不一样的。 我的app 京东 qq音乐 这样一对比发现是有的丑啊,那么如何实现呢? 实现 怎么说呢,真不会。百度到的一些是…

java的类和继承构造

一些小技巧 类和对象 什么是类,对象,方法? 在下面的 Java 代码中,定义了一个名为 Person 的类,并提供了构造方法来初始化对象的属性。类中定义了 eat、sleep 和 work 三个方法,用于表示人的行为。在 main 方…

ValueError: ‘x‘ and ‘y‘ must have the same size

ValueError: ‘x’ and ‘y’ must have the same size 问题描述 出错代码 axes[0].errorbar(dates_of_observation, observed_lai, yerrstd_lai, fmt"o")X是观测的日期,16天,而且数据也是对应的16个,为什么不对应呢?…

python工具CISCO ASA设备任意文件读取

​python漏洞利用 构造payload: /CSCOT/translation-table?typemst&textdomain/%2bCSCOE%2b/portal_inc.lua&default-language&lang../漏洞证明: 文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。 免…

git的分支及标签使用及情景演示

目录 一. 环境讲述 二.分支 1.1 命令 1.2情景演练 三、标签 3.1 命令 3.2 情景演示 ​编辑 一. 环境讲述 当软件从开发到正式环境部署的过程中,不同环境的作用如下: 开发环境:用于开发人员进行软件开发、测试和调试。在这个环境中…

git push origin masterEverything up-to-date

按住这个看一下很简单的问题,我在网上看了很多就是没找到能用的,最后找到了这个看起来写的很简单的一个文章,但他写的真的有用。 出现的问题 解决步骤

前端开发引入element plus与windi css

背景 前端开发有很多流行框架,像React 、angular、vue等等,本文主要讲vue 给新手用的教程,其实官网已经写的很清楚,这里再啰嗦只是为了给新手提供一个更加简单明了的参考手册。 一、打开element plus官网选则如图所示模块安装命令…

【学习笔记】Understanding LSTM Networks

Understanding LSTM Networks 前言Recurrent Neural NetworksThe Problem of Long-Term DependenciesLSTM Networks The Core Idea Behind LSTMsStep-by-Step LSTM Walk ThroughForget Gate LayerInput Gate LayerOutput Gate Layer Variants on Long Short Term MemoryConclus…

go学习之接口知识

文章目录 接口1.接口案例代码展示2.基本介绍3.基本语法4.应用场景介绍5.注意事项和细节6.接口编程经典案例7.接口与继承之间的比较8.面向对象编程--多态1)基本介绍2)快速入门3)接口体现多态的两种形式 9.类型断言1)先看一个需求2&…

odoo16 库存初始化 excel导入问题2

产品导入模板: excel内容: 导入测试 查看可能的值,发现没有ml,在计量单位中增加ml选项(不选创建,知道为什么不,仔细想想,创建不知ml是什么单位) 位置不能在此导入,故取消 测试正常 导入成功 总结:产品导入时,位置无法指定,只建产品名称,计量单位,采购单位,

混沌系统在图像加密中的应用(基于哈密顿能量函数的混沌系统构造1.3)

混沌系统在图像加密中的应用(基于哈密顿能量函数的混沌系统构造1.3) 前言一类三维非哈密顿系统的构造与动态特性分析1.相关理论基础2.类Nos-Hoove系统构造的思路及实现3.基于哈密顿能量理论的Nos-Hoove系统的分析与仿真3.1 平衡点分析3.2 不同强度激励下…

软件设计师 之 【第三章】数据库系统

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 1、数据库系统前言 2、三级模式 - 两级映射…

数据结构 | 带头双向循环链表专题

数据结构 | 带头双向循环链表专题 前言 前面我们学了单链表,我们这次来看一个专题带头的双向循环链表~~ 文章目录 数据结构 | 带头双向循环链表专题前言带头双向循环链表的结构实现双向链表头文件的定义哨兵位初始化创建节点尾插尾删头插头删打印查找指定位置前插入…

DevChat 初探之 RBAC 模型的实现

今天我们来尝试一款编程辅助助手 DevChat, 看能不能提升咱们的日常编程效率。作为一款编程助手,我们来看看它与 Copilot, CodeWhisperer 同领域产品的一些区别和特色。定个小目标,通过 DevChat 实现一个简单的 RBAC 模型,小试牛刀一下&#x…

虚拟机CentOS 8 重启后不能上网

情况说明:原本虚拟机是可以上网的,然后嘚一下,重启后,连接不上网络,完了,上网查找一堆质料,我的连接方式是桥接模式(复制物理网络连接状态)。 好,有人说是vmn…

C++: 内存管理 (new / delete)

文章目录 一. C/C 内存分布二. C 语言中动态内存管理方式: malloc/calloc/realloc/free三. C内存管理方式1. new / delete 操作内置类型2. new / delete 操作自定义类型 四. operator new 与 operator delete 函数五. new 和 delete 的实现原理1. 内置类型2. 自定义类型 六. 定…

双11终极官方战报 凯迪仕智能锁全网全渠道第一 持续领跑智能锁行业

一年一度双11狂欢盛典暂时落下帷幕,作为下半年最大的电商购物节,本次双11电商平台借机推出优惠券、补贴、折扣等促销活动,激发消费者购物热情。其中,智能门锁等智能家居产品更是取得了亮眼的成交。 据悉,凯迪仕智能锁双…

自定义Graph Component:1-开发指南

可以使用自定义NLU组件和策略扩展Rasa,本文提供了如何开发自己的自定义Graph Component指南。   Rasa提供各种开箱即用的NLU组件和策略。可以使用自定义Graph Component对其进行自定义或从头开始创建自己的组件。   要在Rasa中使用自定义Graph Component&#x…

Pinia 状态管理器 菠萝:Setup Store风格

Pinia介绍: Pinia 是 Vue 的专属状态管理库,它允许你跨组件或页面共享状态。 Pinia 大小只有 1kb 左右,超轻量级,你甚至可能忘记它的存在! 相比 Vuex,Pinia 的优点: 更贴合 Vue 3 的 Composition API 风…