计算机考研408有向无环图描述表达式可靠构造方法

目录

  • 前言
  • 目标(以王道书为例)
  • 构造方法
    • 1. 建树
    • 2. 后序遍历
      • 1. a
      • 2. b
      • 3. +
      • 4. b
      • 5. c
      • 6. d
      • 7. +
      • 8. *
      • 9. *
      • 10. c

前言

对王道视频中的分层合并思想不是很满意,笔者提出自己的构造方法。

目标(以王道书为例)

在这里插入图片描述

构造方法

笔者通过王道书中给出的表达式例子介绍构造方法

1. 建树

通过表达式构造二叉树:
在这里插入图片描述

2. 后序遍历

  1. 创建一个空森林
  2. 后序遍历中如果无法继续在森林中跟踪当前结点,则如果最近一次跟踪的子树与当前结点没有祖先关系,则将当前结点作为最近一次跟踪的子树的根节点,否则作为新的树加入森林中。
  3. 当前结点的左子树必在森林中,则只需通过左子树任意叶节点进行寻根操作就可以找到森林中左子树的根节点,将当前结点作为森林中该左子树的根结点。跟踪当前结点
  4. 如果能继续在森林中跟踪当前结点,即能找到相同的遍历序列(找到相同的树),则继续跟踪。

下面通过王道书的例子解释“跟踪”的概念和构造方法。

1. a

a不在森林中,无法继续在森林中跟踪a,则将a作为空树的根结点,跟踪a。
在这里插入图片描述

2. b

无法跟踪b,最近一次跟踪a,且a、b没有祖先关系,则将b作为新树,跟踪b。
在这里插入图片描述

3. +

无法继续跟踪+,最近一次跟踪b,且+、b有祖先关系,则将+作为b的根,左子树a必存在,从a寻根结果为a,将+作为a的根,跟踪+。
在这里插入图片描述

4. b

能跟踪到b,则继续跟踪b。
在这里插入图片描述

5. c

无法跟踪c,最近一次跟踪b,且没有祖先关系,则将c作为新树,跟踪c。
在这里插入图片描述

6. d

无法跟踪d,最近一次跟踪c,且没有祖先关系,则将d作为新树,跟踪d。
在这里插入图片描述

7. +

最近一次跟踪d,无法跟踪+(因为最近一次跟踪d,而d没有父亲+),且d、+有祖先关系,则将+作为d的根,左子树c必存在,从c寻根结果为c,将+作为c的根,跟踪+。
在这里插入图片描述

8. *

最近一次跟踪+,无法跟踪*(因为最近一次跟踪+,而+没有父亲*),且+、*有祖先关系,则将*作为+的根,左子树b必存在,从b寻根结果为b,将*作为b的根,跟踪*。
在这里插入图片描述

9. *

最近一次跟踪*,无法跟踪*(因为最近一次跟踪*,而*没有父亲*),且*、*有祖先关系,则将*作为*的根,左子树必存在,从a(或b)的寻根结果为+,将*作为+的根,跟踪*。
在这里插入图片描述

10. c

能跟踪到c(因为能找到相同的c),

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

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

相关文章

Doris实践——同程数科实时数仓建设

目录 前言 一、早期架构演进 二、Doris和Clickhouse选型对比 三、新一代统一实时数据仓库 四、基于Doris的一站式数据平台 4.1 一键生成任务脚本提升任务开发效率 4.2 自动调度监控保障任务正常运行 4.3 安全便捷的可视化查询分析 4.4 完备智能的集群监控 五、收益与…

线控悬架系统分析

线控悬架系统分析 附赠自动驾驶学习资料和量产经验:链接 1 线控悬架系统系统发展现状 • 车辆驾乘过程中,操控性和舒适性是两个重要的评价指标,两者很难兼顾; • 线控悬架就是根据路况实际情况自动调节悬架的高度、刚度、阻尼实…

012_control_flow_in_Matlab中的控制流

Matlab中的控制流 虽然,我们说Matlab中的计算是向量化的,但是在某些情况下,作为一个“程序设计语言”,Matlab也提供了一些控制流结构,来帮助我们实现一些复杂的逻辑。 我会在介绍控制流的时候,提醒如何用…

Ansys Zemax | 如何将光栅数据从Lumerical导入至OpticStudio(上)

附件下载 联系工作人员获取附件 本文介绍了一种使用Ansys Zemax OpticStudio和Lumerical RCWA在整个光学系统中精确仿真1D/2D光栅的静态工作流程。将首先简要介绍方法。然后解释有关如何建立系统的详细信息。 本篇内容将分为上下两部分,上部将首先简要介绍方法工…

【Leetcode】top 100 技巧

136 只出现一次的数字 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 技巧&#xff1a…

LeetCode 96. 不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5示例 2: 输入:n 1 输出:1提…

代码随想录算法训练营第二十二天| 235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

系列文章目录 目录 系列文章目录235. 二叉搜索树的最近公共祖先①递归法自己写的简洁版 ②迭代法不能这样写!正确写法 701.二叉搜索树中的插入操作①递归法②迭代法 450.删除二叉搜索树中的节点递归法 235. 二叉搜索树的最近公共祖先 ①递归法 自己写的 class So…

书生·浦语大模型InternLM-Chat-1.8B 智能对话 Demo 第二期

文章目录 InternLM-Chat-1.8B 智能对话 Demo环境准备下载模型运行 InternLM-Chat-1.8B web 运行八戒 demo下载模型执行Demo InternLM-Chat-1.8B 智能对话 Demo 环境准备 在InternStudio平台中选择 10% A100(1/4) 的配置(平台资源有限),如下图…

【c语言】自定义类型:联合体(公用体)【详解】

联合体 联合体类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共用体。 给联合体其中⼀个成…

2024阿里云域名优惠口令免费领取,COM、CN和xin域名口令

2024年阿里云域名优惠口令,com域名续费优惠口令“com批量注册更享优惠”,cn域名续费优惠口令“cn注册多个价格更优”,cn域名注册优惠口令“互联网上的中国标识”,阿里云优惠口令是域名专属的优惠码,可用于域名注册、续…

【QT入门】 自定义标题栏界面qss美化+按钮功能实现

往期回顾: 【QT入门】 鼠标按下和移动事件实现无边框窗口拖动-CSDN博客【QT入门】 设计实现无边框窗口拉伸的公用类-CSDN博客【QT入门】对无边框窗口自定义标题栏并实现拖动和拉伸效果-CSDN博客 【QT入门】 自定义标题栏界面qss美化按钮功能实现 一、最终效果 二、…

【JAVASE】学习类与对象的创建和实例化

✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉 🍎个人主页:再无B~U~G-CSDN博客 目标: 1. 掌握类的定义方式以及对象的实例化 2. …

MVCC的实现原理

简介 MVCC(Multi-Version Concurrency Control)即多版本并发控制。 MVCC的实现原理 我们在了解MVCC之前,首先先了解一下几个比较常见的锁。 **读锁:**也叫共享锁、S锁,若事务T对数据对象A加上S锁,则事务…

一维卷积神经网络的特征可视化

随着以深度学习为代表的人工智能技术的不断发展,许多具有重要意义的深度学习模型和算法被开发出来,应用于计算机视觉、自然语言处理、语音处理、生物医疗、金融应用等众多行业领域。深度学习先进的数据挖掘、训练和分析能力来源于深度神经网络的海量模型…

使用OpenCV4.9的随机生成器和文本

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV 4.9基本绘图 下一篇:OpenCV系列文章目录(持续更新中......) 目标 在本教程中,您将学习如何: 使用随机数生…

软件架构风格_2.调用/返回体系结构风格

调用/返回风格是指在系统中采用了调用与返回机制。利用调用-返回实际上是一种分而治之的策略,其主要思想是将一个复杂的大系统分解为若干子系统,以便降低复杂度,并且增加可修改性。程序从其执行起点开始执行该构件的代码,程序执行…

分发饼干(力扣455)

文章目录 题目贪心算法思想概述关键要素解题步骤优缺点优点缺点 应用领域 题解一、思路二、解题方法三、Code 总结 题目 Problem: 455. 分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i&am…

2024 ccfcsp认证打卡 2023 05 01 重复局面

2023 05 01 重复局面 题目题解1题解2区别:数据存储方式:时间复杂度:空间复杂度: 总结: 题目 题解1 import java.util.*;public class Main {public static void main(String[] args) {Scanner input new Scanner(Sys…

Stream 流和 Lambda 组装复杂父子树形结构

在最近的开发中,遇到了两个类似的需求:都是基于 Stream 的父子树形结构操作,返回 List 集合对象给前端。于是在经过需求分析和探索实践后有了新的认识,现在拿出来和大家作分享交流。 一般来说完成这样的需求大多数人会想到递归&a…

面试题 之 vue

1.vue里怎样实现双向数据绑定? Viewmodel 中的Domlisteners 工具会帮我们检测页面上Dom元素的变化,如果有变化,则更改Model中的数据,更新model中的数据时,数据事件绑定工具会帮我们更新页面中的Dom元素 2.Vue的响应式原…