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

news2024/11/17 0:50:00

目录

  • 前言
  • 目标(以王道书为例)
  • 构造方法
    • 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.coloradmin.cn/o/1568041.html

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

相关文章

GitGithub小册:版本管理必备利器

在 GitHub上创建仓库 这一步骤的前提是先注册一个 GitHub的账号,由于那都是小场面,就不再巴拉巴拉。 说明一下,全文如果没有特别的单独说明,文中所有用【】括起来的内容都代表网页或者软件节点的操作按钮或者步骤选择项。 打开 Gi…

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

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

AI论文速读 |【综述】 时序分析基础模型:教程与综述

论文标题:Foundation Models for Time Series Analysis: A Tutorial and Survey 作者: Yuxuan Liang(梁宇轩), Haomin Wen(温浩珉), Yuqi Nie(PatchTST一作), Yushan Jiang, Ming J…

redis的常用基本命令与持久化

文章目录 redis的基本命令1.授权密码2.增加、覆盖、查询、删除、切换库名、移动、清空数据库 Redis持久化RDB模式主动备份自动备份RDB备份过程 AOF备份模式开启AOF备份模式执行流程 总结 redis的基本命令 1.授权密码 config set requirepass 密码设置完密码需要认证密码以后才…

最简单的 H.264 视频码流解析程序

最简单的 H.264 视频码流解析程序 最简单的 H.264 视频码流解析程序原理源程序运行结果下载链接参考 最简单的 H.264 视频码流解析程序 参考雷霄骅博士的文章:视音频数据处理入门:H.264视频码流解析 本文中的程序是一个H.264码流解析程序。该程序可以从…

​IAA+IAP混合变现趋势下,出海手游广告玩法解析 | TopOn出海干货

3月23日,TopOn 携手罗斯基及汇量科技旗下一站式跨渠道智能投放工具XMP联合主办的“2023游戏出海新机会”上海站线下沙龙成功举办。 本次活动邀请到多位业内知名公司、平台的负责人,分别从海外投放增长策略、产品融合玩法方向、商业混合变现模式、三方安…

C++万物起源:类与对象(三)拷贝构造、赋值重载

目录 一、拷贝构造函数 1.1拷贝构造函数的概念与特征 1.2拷贝构造的实现 1.3默认构造函数 1.4拷贝构造函数典型调用场景 二、赋值运算符重载 2.1赋值运算符重载的格式 一、拷贝构造函数 1.1拷贝构造函数的概念与特征 在c语言语法中,我们可以将一个变量赋值给…

OSPF中配置静态路由备份 实验简述

OSPF中配置静态路由备份 实验简述 静态路由备份是一种网络路由的备份机制,用于提高网络的可靠性和冗余性。而静态路由备份则是在主路由失效时,自动切换到备用路由,以确保网络的连通性。 主路由默认优先级为60,备份路由设置优先级1…

Doris实践——信贷系统日志分析场景的实践应用

目录 前言 一、早期架构演进 1.1 架构1.0 基于Kettle MySQL离线数仓 1.2 架构2.0 基于 Presto / Trino统一查询 二、基于Doris的新一代架构 三、新数仓架构搭建经验 3.1 并发查询加速 3.2 数仓底座建设 四、Doris助力信DolphinScheduler 和 Shell 贷业务场景落地 4.…

前端学习<四>JavaScript基础——03-常量和变量

常量(字面量):数字和字符串 常量也称之为“字面量”,是固定值,不可改变。看见什么,它就是什么。 常量有下面这几种: 数字常量(数值常量) 字符串常量 布尔常量 自定义…

C#编写MQTT客户端软件

主要参考C#MQTT编程06--MQTT服务器和客户端(winform版)_c#mqttserver-CSDN博客 但由于使用的.NET版本和MQTT库版本存在差异,因此有些不同。 MQTT协议内容在此不做描述,仅介绍VS使用C#的实现过程。本次使用VS2015,.netframwork4.6。 C#语言本身…

从零到一:基于 K3s 快速搭建本地化 kubeflow AI 机器学习平台

背景 Kubeflow 是一种开源的 Kubernetes 原生框架,可用于开发、管理和运行机器学习工作负载,支持诸如 PyTorch、TensorFlow 等众多优秀的机器学习框架,本文介绍如何在 Mac 上搭建本地化的 kubeflow 机器学习平台。 注意:本文以 …

STM32单片机智能电表交流电压电流程序设计(电流 电压互感器TV1005M+TA1005M)

资料下载地址:STM32单片机智能电表交流电压电流程序设计(电流 电压互感器TV1005MTA1005M) 1、摘要 5、基于STM32F103单片机智能电表交流电压电流设计 本设计由STM32单片机核心板电路交流电压电流检测模块电路WIFI模块电路指示灯电路组成。 1、通过电压互感器TV100…

【Canavs与艺术】绘制蓝白绶带大卫之星勋章

【图例】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>用Canvas绘制蓝白绶带大卫之星勋章</title><style type&quo…

计算机网络—TCP协议详解:特性、应用(2)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;マリンブルーの庭園—ずっと真夜中でいいのに。 0:34━━━━━━️&#x1f49f;──────── 3:34 &#x1f504; ◀️…

我愿把这个网站成为全球最强AI网站!弄100多个AI伺候你??

家人们&#xff0c;你们猜我发现了什么牛逼的AI网站&#xff1f;&#xff1f; 直接上图&#xff1a; 这个网站&#xff0c;聚合了国内外100多个顶尖的AI&#xff0c;包括了OpenAI家的GPT3.5、GPT4、GPT4V、GPT4.5系列&#xff0c;以及Anthropic家的Claude3 Opus、Claude3 Sone…

Spark-Scala语言实战(11)

在之前的文章中&#xff0c;我们学习了如何在spark中使用RDD中的cartesian,subtract最终两种方法。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scal…

如何系统地自学Python

1、如何系统地自学Python 小白的话可以快速过一下某马&#xff0c;某谷。 主要关注Python有什么集合&#xff0c;里面的集合怎么使用 然后再找一个Python爬虫实战视频&#xff0c;先跟着视频敲一遍代码&#xff0c;然后再尝试自己做一遍 然后再找一个Python服务开发视频&am…

redis乱码\xac\xed\x00\x05t\x00H解决

发现数据库乱码&#xff1a; 这数据库是来自rdids队列list实现的一个简单队列&#xff0c;停止使用该list的服务&#xff0c;查看里面的值&#xff0c;发现 乱码\xac\xed\x00\x05t\x00H&#xff0c;如下图&#xff1a; 很明发送数据端的问题&#xff0c;检查代码&#xff1a; …

如何保持数据一致性

如何保持数据一致性 数据库和缓存&#xff08;比如&#xff1a;redis&#xff09;双写数据一致性问题&#xff0c;是一个跟开发语言无关的公共问题。尤其在高并发的场景下&#xff0c;这个问题变得更加严重。 问题描述&#xff1a; 1.在高并发的场景中&#xff0c;针对同一个…