从前序和后序列表重建树

2024-02-28

考虑这样一种情况,您有两个节点列表,您只知道其中一个是某棵树的前序遍历的表示,另一个是同一棵树的后序遍历的表示。

我相信可以从这两个列表精确地重建树,并且我认为我有一个算法可以做到这一点,但尚未证明。由于这将是硕士项目的一部分,我需要绝对确定它是可能的且正确的(经过数学证明)。然而,这不是该项目的重点,所以我想知道是否有可以引用的来源(即论文或书籍)作为证明。 (也许在 TAOCP 中?有人可能知道这个部分吗?)

简而言之,我需要在可引用资源中提供一种经过验证的算法,该算法可以根据前后顺序遍历来重建树。


注意:所讨论的树可能不是二元树,也不是平衡树,也不是任何使它变得太容易的树。

注2:仅使用预购或后购列表会更好,但我认为这是不可能的。

注3:一个节点可以有任意数量的子节点。

Note4:我只关心兄弟姐妹的顺序。当只有一个孩子时,左或右并不重要。


前序和后序并不唯一地定义一棵树。 http://www.cmi.ac.in/~madhavan/courses/programming06/lecture12-21sep2006.txt

一般来说,单个树的遍历并不能唯一地定义 树的结构。例如,正如我们所见,对于两者 以下树,中序遍历得到 [1,2,3,4,5,6]。

    4                     3
   / \                   / \
  2   5                 2   5
 / \   \               /   / \
1   3   6             1   4   6

预购和后购也存在同样的歧义 遍历。上面第一棵树的前序遍历是 [4,2,1,3,5,6]。这是具有相同预序的不同树 遍历。

    4
   / \
  2   1
     / \
    3   6
     \
      5

类似地,我们可以轻松构造另一棵树,其后序 遍历 [1,3,2,6,5,4] 与上面第一棵树的遍历相匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从前序和后序列表重建树 的相关文章

  • 带回溯的 Dijkstra 算法?

    In a 相关主题 https stackoverflow com questions 28333756 finding most efficient path between two nodes in an interval graph
  • 零填充缓冲区/文件的 CRC32 计算

    如果我想计算大量连续零字节的 CRC32 值 在给定零运行长度的情况下 是否可以使用恒定时间公式 例如 如果我知道我有 1000 个字节全部用零填充 有没有办法避免 1000 次迭代的循环 只是一个例子 对于这个问题 实际的零数量是无限的
  • 许可证密钥模式检测? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这不是真实情况 请忽略您可能认为适用的法律问题 因为它们并不适用 假设我有一组 200 个已知的有效许可证密钥 用于假设的软件许可算法
  • 算法的最佳、最差和平均情况运行时间是多少?

    算法的最佳 最差和平均情况运行时间是多少 用最简单的术语来说 对于输入大小为n 最好的情况 最快完成时间 选择最佳输入 例如 排序算法的最佳情况是已经排序的数据 最坏的情况下 完成最慢的时间 选择了消极的输入 例如 排序算法的最坏情况可能是
  • 我怎样才能找到圆的所有点? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 给定半径和圆心坐标 如何找到圆的所有
  • 如何在 O(n) 时间内遍历二叉树而不需要额外的内存

    给定一棵带有整数 左指针和右指针的二叉树 如何在 O n 时间和 O 1 额外内存 无堆栈 队列 递归 内遍历该树 This guy http nandacumar blogspot com 2006 06 traversing tree
  • 用 pandas 查找树中叶节点的所有祖先

    我有一个表 有两列 父 和 子 这是从 SAP ERP 下载的 SETNODE 表 需要在 python 中创建一个数据框 其中每个级别作为其自己的列 相对于其父级和之前的所有级别 在Python 3 中 完整关系的级别数量未知 或始终变化
  • 在 C 中打印字符串的所有排列

    我正在学习回溯和递归 并且我陷入了打印字符串所有排列的算法 我用以下方法解决了它贝尔算法 http programminggeeks com bell algorithm for permutation 用于排列 但我无法理解递归方法 我在
  • 硬币兑换的空间优化解决方案

    给定一个值 N 如果我们想要找 N 分钱 并且我们有无限供应每种 S S1 S2 Sm 价值的硬币 我们可以有多少种找零方式 硬币的顺序并不重要 例如 对于 N 4 且 S 1 2 3 有四种解 1 1 1 1 1 1 2 2 2 1 3
  • 生成非连续组合

    我正在尝试创建一个生成器 支持执行 next 的迭代器 可能在 python 中使用yield 它给出来自 1 2 n n 和 r 是参数 的 r 元素的所有组合 这样在选出的r个元素 没有两个是连续的 例如 对于 r 2 且 n 4 生成
  • 如何使用哈希表在最小堆上实现 O(1) 删除

    在某处阅读以下声明 可以使用附加的哈希表来快速删除 最小堆 问题 gt 如何组合priority queue and unordered map这样我就可以实现上面的想法了 include
  • 如何选择部分密集数据集的均匀分布子集?

    P是一个 n d 矩阵 持有nd 维样本 P某些地区的密度是其他地区的几倍 我想选择一个子集P其中任意样本对之间的距离大于d0 并且我需要将其传播到整个区域 所有样本都具有相同的优先级 无需优化任何内容 例如覆盖面积或成对距离之和 这是执行
  • 如何对数组进行排序(索引)以使用这些索引将原始数组从最小到最大值排序

    例如我有这个数组 int a 6 10 16 11 7 12 3 9 8 5 我想像这样对其索引进行排序 6 9 0 4 8 7 1 3 5 2 所以我可以使用索引将 a 从最小到最大值排序 在我的代码中我得到了这个 6 9 4 8 7 4
  • 在 O(n) 时间内运行的指数乘法算法?

    我正在读一本算法教科书 我被这个问题难住了 假设我们要计算值 x y 其中 x 和 y 为正数 分别具有 m 和 n 位的整数 解决该问题的一种方法是执行 y 1 乘以 x 你能给出一个仅使用 O n 乘法步骤的更有效的算法吗 这会是一个分
  • 如何在 Perl 中使用数组引用中的索引作为方法引用?

    如同这个关于迭代子例程引用的问题 https stackoverflow com questions 452529 how do i iterate over dereference an array of subroutine refs
  • 交换两个向量之间的值,使两个向量的 max_element 之和最小

    这是 Codechef 的问题 但请耐心等待 https www codechef com ZCOPRAC problems ZCO16001 https www codechef com ZCOPRAC problems ZCO16001
  • 如何计算两个ip之间的主机数量? C#

    我有两个ip 1 1 1 1 1 2 4 4 4 4 显然这只是一个例子 这是一个动态计算器 如果子网掩码不相关 我如何计算所述 ip 之间的主机数量 要计算 理论 IP 地址的数量 您需要将每个 IP 地址转换为其 32 位整数格式 这实
  • 哪种数据聚类算法适合检测时间序列事件中未知数量的聚类?

    这是我的场景 考虑在不同地点和时间发生的一组事件 例如 考虑有人在高空记录暴风雨期间城市中的雷击 就我的目的而言 闪电是瞬时的 只能击中某些位置 例如高层建筑 还可以想象每次雷击都有一个唯一的 ID 以便以后可以参考该雷击 这个城市大约有1
  • 合并字符数组中的最小重复次数

    假设我有两个数组 我想合并它们 以便合并后的数组具有最小重复次数 例如 x x 是重复 arr1 x d d m f m arr2 d d x f f m 唯一的条件是在合并数组中 元素来自arr1 and arr2必须出现在各自的订单中a
  • 反转二进制网络

    如何反转二元方程 以便找到哪些输入将产生给定的输出 Example Inputs i0 through i8 Outputs o0 through o8 Operators XOR AND 二元方程 1 i0 1 i1 0 i2 1 i3

随机推荐

  • html 输入\文本区域的默认最大长度是多少?

    表单和文本区域中 html 输入字段的默认最大长度是多少 它有什么限制吗 如果没有指定最大长度 则文本区域和文本输入的默认字符数不受限制 来自 textarea 的 MDN Web 文档 用户可以输入的最大字符数 unicode 代码点 如
  • LXC 与 VM 的典型用例是什么?

    我正在尝试确定 LXC 容器何时是比使用完整虚拟机更好的选择 您是否有任何精确的用例可以以某种方式带来一些争论 LXC 是否更面向 PaaS 无需硬件控制即可运行应用程序 我们是否总是需要从 IaaS 角度使用虚拟机来控制基础设施 Rega
  • 在 AngularJS 控制器之间共享数据

    我正在尝试跨控制器共享数据 用例是一种多步骤形式 在一个输入中输入的数据随后在原始控制器外部的多个显示位置中使用 下面和中的代码jsfiddle在这里 http jsfiddle net AVhRf HTML div div
  • 使用 Hibernate OGM 进行 MongoDb 身份验证

    我可以使用 shell 命令在 mongodb 上进行身份验证 mongo u user p pwd authenticationDatabase admin MongoDB shell version v3 4 1 connecting
  • Visual Studio 在发布过程中使用 launchSettings.json 配置文件中定义的哪一个?

    我正在尝试配置 ASP NET Core 项目发布配置文件以部署到临时环境 服务器上设置了预配置的 ASPNETCORE ENVIRONMENT 变量 但无论我尝试什么 Visual Studio 都会不断将 ASPNETCORE ENVI
  • 为什么倒计时器放入幻灯片母版后会冻结?

    我使用以下代码进行倒计时 在幻灯片模式下 该倒计时将跨越 10 张幻灯片 我将形状放置在幻灯片母版布局中 Set QS ActivePresentation Designs 2 SlideMaster CustomLayouts 2 Dim
  • events.js:85 抛出错误; // 未处理的“错误”事件

    我正在尝试设置 Twitter 应用程序 但目前遇到以下错误 node twitter js events js 85 throw er Unhandled error event SyntaxError Unexpected token
  • 没有在字段 [title] 上声明的类型 [text] 的处理程序 (python elasticsearch

    全部 我使用的python elasticsearch版本是 import elasticsearch print elasticsearch version 5 0 1 映射是 request body mappings post pro
  • 什么是 procs 和 lambda?实际例子请[重复]

    这个问题在这里已经有答案了 可能的重复 何时使用 lambda 何时使用 Proc new https stackoverflow com questions 626 when to use lambda when to use proc
  • Magento 致命错误:在非对象上调用成员函数 getSortedChildren()

    我已经安装了 Magento CE 1 9 版本 在调用主页上的 Catalog 后出现错误 问题似乎与列表 phtml 错误 致命错误 调用成员函数getSortedChildren 在 中的非对象 mageinc app design
  • 我是否滥用 UIViewController 子类化?

    在试图弄清楚为什么 viewWillAppear 没有在我的应用程序中被调用时 我发现了我对 UIViewController 子类的预期用途可能存在的严重误解 根据下面的帖子使用 addSubView 时 viewWillAppear 不
  • 使用 iCloud Apple ID 匿名登录应用程序

    根据这个CloudKit 概述 https developer apple com icloud index html CloudKit 还使您的用户能够使用其 iCloud Apple ID 匿名登录您的应用程序 而无需共享其个人信息 我
  • mysql 区分大小写吗?

    I wrote select from mytable 在我的 Windows 上的 ASP net 应用程序中 它运行良好 在 Linux 上它抱怨我使用mytable代替MyTable 在处理表名时 如何将 Windows 上的 MyS
  • 用于分配用户角色的首选数据库设计方法? (帽子与团体)

    我有一个中等规模的 MySQL 数据库 其中有一个主要的 人员 表 其中包含与剧院和戏剧学校相关的每个人的基本联系信息 我负责维护和开发许多 Web 应用程序 有些人只是联系人 也就是说 他们的 人 表记录是我们需要存储的有关他们的所有信息
  • 如何在 mod_rewrite 中设置可选参数

    我在一个新项目中 正在设计 URL 结构 问题是我希望 URL 看起来像这样 category 23 keyword 5 正常页面是 search php q keyword cat 23 page 5所以我的问题是 cat and pag
  • 不同类别因素的欧几里得距离按组迭代

    更新 Rui 建议的答案很棒并且可以正常工作 然而 当我在大约 700 万个观察值 我的实际数据集 上运行它时 R 陷入了计算块 我使用的是具有 64GB RAM 的机器 任何其他解决方案将不胜感激 我有一个专利数据框 其中包含公司 申请年
  • 首先按 null 排序,然后按其他变量排序

    这是我现在的代码 SELECT id number FROM Media WHERE user 10 ORDER BY id number 但我希望它看起来像 SELECT id number FROM Media WHERE user 1
  • 如何隐藏 F# 中的方法?

    我目前正在 F 中实现 Spec 框架 我想隐藏我的 Equals GetHashCode 等方法should类型 以便 API 不会因这些而混乱 我知道在 C 中 这是通过让类实现如下接口来完成的 using System using S
  • 在 Nuget 包中公开 Azure Functions

    我们希望在我们的不止一种产品中实现可重用的功能 我想做的是 创建一个包含一个或多个 Azure Functions 附加了 FunctionNameAttribute 的静态方法 的 C 项目 将此项目转为NuGet包 在 Azure Fu
  • 从前序和后序列表重建树

    考虑这样一种情况 您有两个节点列表 您只知道其中一个是某棵树的前序遍历的表示 另一个是同一棵树的后序遍历的表示 我相信可以从这两个列表精确地重建树 并且我认为我有一个算法可以做到这一点 但尚未证明 由于这将是硕士项目的一部分 我需要绝对确定