【数据结构与算法】树的存储,森林 详解

树的几种存贮结构(双亲表示法、孩子表示法、孩子兄弟表示法)的优缺点,各自适应的运算。

  1. 双亲表示法:

    • 优点:方便查找双亲及其祖先结点
    • 缺点:
      1. 查找孩子和兄弟结点比较费事
      2. 未表示出结点之间的先后次序
    • 适应的运算:查找节点的双亲,合并两棵树等。
  2. 孩子表示法(孩子链表表示法):

    • 优点:
      1. 方便查找孩子及其子孙结点
      2. 能表示出结点之间的先后次序
    • 缺点:
      1. 查找结点的双亲及祖先费事
      2. 查找结点的兄弟也费事
    • 适应的运算:查找节点的孩子,插入节点等。
  3. 孩子兄弟表示法(二叉链表表示法):

    • 优点:
      1. 便于实现树的各种操作,如查找孩子、子孙或兄弟结点
      2. 能表示出结点之间的先后次序
    • 缺点:找结点的双亲及祖先比较费事
    • 适应的运算:查找节点的兄弟,查找节点的孩子,插入节点,删除节点等。

哪种存贮结构可将森林转为二叉树。

可以使用"左孩子右兄弟"表示法将森林转换为二叉树。在这种表示法中,每个节点有两个指针,一个指向其第一个孩子(左孩子),另一个指向其下一个兄弟(右兄弟)。

这种方法将森林中的每棵树转换为二叉树,其中树的根是二叉树的根,树的子树(森林)转换为二叉树的左子树,而森林的其余部分转换为二叉树的右子树。

此种结构各域的注释。

每个节点包含以下字段:

  • 数据域:存储节点的数据。
  • 左孩子指针:指向节点的第一个孩子。如果节点是叶子节点,那么这个指针为空。
  • 右兄弟指针:指向节点的下一个兄弟。如果节点是同一父节点的最后一个孩子,那么这个指针为空。

说明在这个结构中怎样找到森林的n棵树。

要找到森林的n棵树,可以从根节点开始,沿着"右兄弟"指针遍历n-1次。具体步骤如下:

  1. 从根节点开始。
  2. 沿着"右兄弟"指针移动n-1次。每次移动都将你带到下一棵树的根节点。
  3. 停止移动后,你将位于第n棵树的根节点。

这种方法的前提是,森林的所有树都在同一层级,并且根节点的"右兄弟"指针指向下一棵树的根节点。如果森林的树不在同一层级,或者根节点的"右兄弟"指针不指向下一棵树的根节点,那么这种方法可能无法正确找到第n棵树。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iOS封装FrameWork

我们是整个项目封装给客户app用,项目里面有资源文件:xib和图片文件。有第三方,也有.a文件和第三方给我们的frameWork。下面记录下大体遇到的问题及遇到的冲突解决办法。 第一部分:封装frameWork 1.首先准备好,要封装的…

无线领夹麦克风哪款好,领夹麦克风哪个品牌好,多款麦克风推荐

​科技发展让无线领夹麦克风成为现代演讲、演出和采访不可或缺的工具。这种小巧便携的设备让我们摆脱线缆束缚,自由移动同时保持声音清晰稳定。无线领夹麦克风怎么选呢?接下来,我们介绍几款市面上综合表现相当不错的无线领夹麦克风给大家来参…

几十块就能“开盒”,还能查祖上三代?

近期,网络上突然开始掀起一阵“人肉开盒”风波。明星、博主、素人无一幸免。 隐匿在此般恶劣行径背后的幕后黑手们无视法律、充满戾气。他们才不管你是什么人,只要有哪里让他们不愉快,那么不好意思,马上“开”你没商量。 这个“…

ubuntu下同时安装和使用不同版本的库 librealsense

apt 安装的最新版本在/usr 源码安装的旧版本在/usr/local set(realsense2_DIR /usr/local/) find_package(realsense2 2.50.0 REQUIRED) message( "\n\n ${realsense2_INCLUDE_DIR} ${realsense2_VERSION} RealSense SDK 2.0 is FINDINGING, please install it from…

Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码

Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码 可封装APP,适合做猫狗宠物类的发信息发布,当然懂的修改一下,做其他信息发布也是可以的。 Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码

WPF 深入理解六、ControlTemplate控件模板

ControlTemplate 定义 控件模板用于来定义控件的外观、样式,还可通过控件模板的触发器(ControlTemplate.Triggers)修改控件的行为、响应动画等。 对与WPF当中,每个控件都是无外观的,这意味着我们可以完全自定义其可视元素的外观,但是不能修改其内部的行为&#xf…

【MySQL系列】MySQL 字符集的演变与选择

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

HUSKY:一个优化大语言模型多步推理的新代理框架

推理被高度认可为生成人工智能的下一个前沿领域。通过推理,我们可以将任务分解为更小的子集并单独解决这些子集。例如以前的论文:思维链、思维树、思维骨架和反射,都是最近解决LLM推理能力的一些技术。此外推理还涉及一些外围功能&#xff0c…

Rust高性能日志库tklog0.0.8—支持mod设置参数

tklog是rust高性能结构化日志库,支持同步日志,异步日志,支持自定义日志的输出格式,支持按时间,按文件大小分割日志文件,支持日志文件压缩备份,支持官方日志库标准API,支持mod独立参数…

每日一题——力扣104. 二叉树的最大深度(举一反三+思想解读+逐步优化)四千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 目录 我的写法 代码功能 代码结构 时间复杂度分析 空间复杂度分析 总结 我要更强 优化方法:迭代&…

20240620在飞凌OK3588-C的LINUX系统启动的时候拉高3个GPIO口141-111-120【方法二】

20240620在飞凌OK3588-C的LINUX系统启动的时候拉高3个GPIO口141-111-120【方法二】 2024/6/20 9:05 缘起:在凌OK3588-C的LINUX R4系统启动的时候,需要拉高GPIO4_B5、GPIO3_B7和GPIO3_D0。 cat sys/kernel/debug/gpio cat /sys/kernel/debug/pinctrl/pin…

搞IT需不需要考个软考中级?

如果你是在事业单位、银行、国企等体制内工作,建议考虑参加软考。通过软考评职称后,可以获得加薪和晋升的机会,而且晋升时也会更看重你的职称等级。我就是通过软考评定了中级职称,薪水涨了500元。 评职称并不仅仅是拿到证书就行&…

【自动驾驶】ROS小车系统、运动底盘的运动学分析和串口通信控制

文章目录 小车组成轮式运动底盘的组成轮式运动底盘的分类轮式机器人的控制方式感知传感器ROS决策主控ROS介绍ROS的坐标系ROS的单位机器人电气连接变压模块运动底盘的电气连接ROS主控与传感器的电气连接ROS主控和STM32控制器两种控制器的功能运动底盘基本组成电池电机控制器与驱…

【计算机网络体系结构】计算机网络体系结构实验-www服务器配置管理实验

一、实验内容 www服务器配置管理, wireshark数据包分析 二、实验目的 1. 了解WWW服务的体系结构与工作原理,掌握利用Microsoft的IIS实现WWW服务的基本配置,掌握WEB站点的管理 2. 利用Wireshark抓取http数据包进行分析。运行软件Wireshark…

【ARMv8/v9 GIC 系列 4 -- GIC 中断分类 SGI | PPI | SPI 及中断检测流程】

文章目录 GIC 中断分类SGI(Software Generated Interrupts)PPI(Per-Processor Interrupts)SPI(Shared Peripheral Interrupts) 中断检测流程物理中断生命周期SPI 中断检测流程PPI 和SGI中断检测流程LPI中断…

Linux基础篇

Linux 本文章是在B站的尚课听的,但是由于版本较老,而且是以centOS学习Linux,由于CentOS在10天后就不再更新,被抛弃了,痛定思痛,及时停课。但是又不想浪费笔记,前来保存一下。 文章目录 Linux前…

iptables(4)规则匹配条件

简介 前面我们已经介绍了iptables的基本原理,表、链,数据包处理流程。如何查询各种表的信息。还有基本的增、删、改、保存的基础操作。 经过前文介绍,我们已经能够熟练的管理规则了,但是我们只使用过一种匹配条件,就是将”源地址”作为匹配条件。那么这篇文章中,我们就来…

电子竞赛1——基于DDS的AM信号发生器

课题要求 产生AM调幅波; 要求:载波10K,被调制波1K; 短按键1(pin_143)改变该调幅波的调制度:25%、50%、75%; 长按按键1(pin_143)改变被调制信号频率&#…

R语言——类与对象

已知2024年4月23日是星期五,编写一个函数day.in.a.week (x, y,z),参数x和y和z分别代表年月日,判断这一天是否存在(例如,2018年没有2月29日,也没有11月31日),如果不存在,返…

Elasticsearch-高CPU优化

ES 高CPU会导致: 吞吐量下降查询响应时间增加慢查询数增加 谁占用了CPU us:user time,表示 CPU 执行用户进程的时间。(各种逻辑运算,函数,排序,复杂相关性计算,密集数据插入等等&am…