为什么中序和前序遍历对于创建算法来确定 T2 是否是 T1 的子树很有用

2024-02-14

我正在看一本采访书,问题是:

你有两个非常大的二叉树:T1,拥有数百万个节点,并且T2,有数百个节点。创建一个算法来决定是否T2是一个 的子树T1.

作者提到这是一个可能的解决方案:

请注意,这里的问题指定T1有数百万 节点——这意味着我们应该注意我们使用的空间量。 比方说,T1有 1000 万个节点——这意味着 数据本身就是关于40 mb. 我们可以创建一个字符串来表示 中序和前序遍历. If T2的前序遍历是 的子串T1的前序遍历,以及T2的中序遍历是 的子串T1的中序遍历,则T2是一个子串T1.

我不太确定为什么这些是真的背后的逻辑:

  • T2-preorder-traversal-string是一个子串T1-preorder-traversal-string
  • T2-inorder-traversal-string是一个子串T1-inorder-traversal-string

That T2必须是一个子串(尽管我假设作者指的是子树)T1。我能得到这个逻辑的解释吗?

EDIT: User 巴托斯·马辛科夫斯基提出了一个很好的观点。假设两棵树都没有重复的节点。


我认为这不是真的。考虑:

T2:

  2
 / \
1   3

inorder 123 preorder 213

and

T1:

      0
     / \
    3   3
   / \ 
  1   1
 / \ 
0   2


inorder 0123103 preorder 0310213

123是子串0123103, 213是子串0310213,但 T2 不是 T1 的子树。

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

为什么中序和前序遍历对于创建算法来确定 T2 是否是 T1 的子树很有用 的相关文章

  • 实施二分查找有哪些陷阱? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 二分查找比看起来更难实现 虽然二分搜索的基本思想相对简单 但细节可能出人意料地棘手 Donald Knuth 新的二分搜索实现中最有可
  • Java递归方法求阶乘返回负输出[重复]

    这个问题在这里已经有答案了 我知道这是溢出 但问题是 20 是相对较小的数字 这不应该发生 对吧 有没有更好的方法来查找大数 例如 1000 的阶乘 而不会得到这种奇怪的结果 public class RecursiveFunctionsE
  • 每个术语出现的次数

    我得到了一个数组a n 2 where n can be 10 5最大时有n个科目和n个学生 全部编号为 1 2 n a i 0 and a i 1 1 lt i lt n 表示在第 i 个科目中 所有来自a i 0 to a i 1 通过
  • 照片马赛克算法。如何在给定基本图像和瓷砖列表的情况下创建马赛克照片?

    Hy 我要做的是创建一个程序 使用 C 或 C 它将 24 位 像素位图和图像集合作为输入 我必须创建一个马赛克图像 类似于使用库的输入图像给定的图像 创建与输入类似的马赛克照片 到目前为止 我可以访问输入的图像像素及其颜色 但我有点卡住了
  • O(1) 算法确定节点是否是多路树中另一个节点的后代?

    想象一下下面的树 A B C D E F 我正在寻找一种方法来查询 F 是否是 A 的后代 注意 F 不需要是directA 的后代 在这种特殊情况下这是正确的 只需要针对更大的潜在后代节点池测试有限数量的潜在父节点 当测试一个节点是否是潜
  • Prim 的迷宫生成算法:获取相邻单元格

    我基于 Prim 算法编写了一个迷宫生成器程序 该算法是 Prim 算法的随机版本 从充满墙壁的网格开始 选择一个单元格 将其标记为迷宫的一部分 将单元格的墙壁添加到墙壁列表中 While there are walls in the li
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • 选择一组数字以达到最小总数的算法

    给定 一组数字n 1 n 2 n 3 n x 还有一个数字M 我想找到最好的组合 n a n b n c n gt M 该组合应达到达到或超过 M 所需的最小值 没有其他组合可以提供更好的结果 将在 PHP 中执行此操作 因此可以使用 PH
  • 我正在尝试寻找“调酒师算法”

    我正在解决旧编程竞赛中的一些示例问题 在这个问题中 我们输入了我们有多少调酒师以及他们知道哪种配方 每杯鸡尾酒的制作时间为 1 分钟 我们需要计算是否可以在 5 分钟内使用所有调酒师完成订单 解决这个问题的关键是尽可能高效地分配鸡尾酒 这就
  • 如何优化分割重叠范围?

    我编写的这个 Python 脚本用于将重叠范围拆分为唯一范围 最后一次迭代 https codereview stackexchange com questions 285932 python script to split overlap
  • 使用 A 星查找路径的启发式函数

    I am trying to find a optimal solution for the following problem 每个节点内表示的数字表示为 x y 一个节点的相邻节点总是有一个y值为 当前节点 y 值 1 更改的成本为 1
  • 优先连接,Matlab 中的复杂网络

    大家好 我现在正在 MATLAB 中研究优先附件模型 在理解以下内容时遇到一些困难 假设我一开始有 4 个节点 连接如下 time 0 1 lt gt 2 3 lt gt 4 在下一个时间步骤中 我添加一个节点和 4 个连接 然后添加另一个
  • pytesseract 无法从图像中识别复杂的数学公式

    我在用pytesseractpython 中的模块 pytesseract从图像中识别文本 但它不适用于包含复杂数学公式 例如根 推导 积分数学问题或方程 的图像 代码2 py Import modules from PIL import
  • 融合元组以查找等价类

    假设我们有一个包含 k 个元素的有限域 D d1 dk 我们认为 S 是 D n 的子集 即一组 形式的元组 其中 ai 在 D 中 我们希望使用 S 2 D n 的子集 即一组 形式的元组 其中 Ai 是 D 的子集 来 紧凑地 表示它
  • 关于逻辑/算法的想法以及如何防止线程写入 Sql Server 中的竞争

    我有以下逻辑 public void InQueueTable DataTable Table int incomingRows Table Rows Count if incomingRows gt RowsThreshold async
  • 最接近 x,y 的线上的点[重复]

    这个问题在这里已经有答案了 可能的重复 如何判断一个点是否在某条线附近 https stackoverflow com questions 910882 how can i tell if a point is nearby a certa
  • 数字求和的算法?

    我正在寻找一种数字求和的算法 让我概述一下基本原则 假设你有一个号码 18268 1 8 2 6 8 25 2 5 7 7 是我们的最终数字 它基本上是将整个数字中的每个数字相加 直到我们得到一个 也称为 核心 数字 它经常被命理学家使用
  • 生成 2D 中的非简并点集 - C++

    我想在 2D 平面中创建一大组非退化的随机点云 整个集合中没有 3 个点在一条直线上 我有一个简单的解决方案 它生成一个随机浮点对 P new x y 并检查到目前为止生成的每对点 P1 P2 是否位于同一行 这需要 O n 2 检查添加到
  • 分组符号最大长度平衡子序列

    将 B 视为分组符号 和 的序列 如果 B 的长度为 0 或 B 具有以下形式之一 则称 B 为平衡序列 X Y 或 X Y 或 X Y 其中 X 和 Y 本身是平衡的 平衡示例 现在的问题是找到一种有效的算法来找到给定输入的最大长度平衡子
  • 计算给出数组中最小标准差的子集

    让我们有一个大小的向量N 例如 x rand N 1 我想计算长度子集的最小标准差K在向量中 When N and K很小 很容易找到最好的子集 因为我可以使用nchoosek N K 枚举所有可能的子集 但是当值N and K比我们说的要

随机推荐

  • 加载 hazelcast 的所有实现

    我正在尝试在多个节点上使用 hazelcast 服务器 我已经在地图存储实现中实现了全部加载 我想知道这是否应该只在服务器节点上启用还是在所有节点上启用 如果我在所有节点上部署相同的内容 这是否不会创建不需要的数据库读取操作 如果我需要仅在
  • 弹出到根视图控制器,表视图不会发生动画崩溃

    我在标签栏控制器中有 3 个视图控制器 单击任何选项卡都会在导航堆栈中加载其根视图控制器 例如选项卡 1 选项卡 2 和选项卡 3 导航堆栈中的第二个视图控制器 tab2VC2 有一个 tableView 单击 tab2 在 tab2 中显
  • Django 可以与 py2exe 一起使用吗?

    我们想为大众市场创建一个 Django Intranet 应用程序 我们只需要支持 Windows 用户 并且 Windows 管理员 或 技术用户 需要非常轻松地进行部署 请记住 大多数 Windows 管理员 用户对 Python 等缺
  • 如果“else”无论如何都会发生,是否应该声明? [复制]

    这个问题在这里已经有答案了 可能的重复 在不需要的情况下应该保留还是删除 else https stackoverflow com questions 3533779 should else be kept or dropped in ca
  • 是否有一种 Objective-C 特定方法来计算整数中的位数

    我想计算 Objective c 中 32 位整数中设置为 1 的位 有些语言将其作为单个调用 Java 有 Integer bitCount C 有时有 popcount SQL 有 BIT COUNT Objective C 有等效的吗
  • Servlet 对 AJAX 请求的响应为空

    我正在使用 javascript 向 servlet 发送 AJAX 请求 Servlet 确实正在回复 但响应标头为空 响应文本也为空 当我尝试使用相同的客户端代码将请求发送到 php 页面时 它工作正常 这是两个客户端 您可以尝试它们并
  • 如何解析隐藏的输入值

    我在这里或谷歌上找不到与解析隐藏输入值相关的任何内容 例如这里的这段代码 我正在尝试解析 40 个字符的密钥
  • Hadoop分区器

    我想问一下Hadoop分区器 它是在Mappers中实现的吗 如何衡量使用默认哈希分区器的性能 是否有更好的分区器来减少数据偏差 Thanks 分区器不在映射器内 以下是每个映射器中发生的过程 每个映射任务将其输出写入循环缓冲存储器 而不是
  • MYSQL - 从不同数据库中选择

    如何从两个不同的数据库中将同一查询中的数据选择到同一服务器中 这就是我正在做的事情 但我的查询不起作用 sqlquery SELECT FROM database 2 table 2 WHERE database 1 table 1 dat
  • 使用 MPNowPlayingInfoCenter 处理 CarPlay 中的播放事件

    我正在尝试构建一个带有 CarPlay 集成的示例音频应用程序 该应用程序是一个测试项目 没有 API 没有流媒体 没有复杂的 UI 只是一个简短的歌曲名称列表 具有选择歌曲并播放的功能 我的目标是在 正在播放 屏幕上按下播放按钮时处理回调
  • Java接口是抽象类吗? [复制]

    这个问题在这里已经有答案了 我正在做一些家庭作业 之前试卷上的一个问题要求命名给定 UML 图中的所有抽象类 我想相当简单 有1个抽象类和3个接口 一般来说 这些接口是否符合抽象类的资格 问题是 虽然从技术上讲 接口可以在 Java 等语言
  • 如何阻止 Linux 初始化 USB HID 设备

    我有一个 USB HID 设备 可以在两种不同的模式下工作 模式的选择基于发送给它的 USB 枚举 初始化数据包的顺序 我使用的是运行 Raspbian 的 Raspberry Pi 3 但是如果我为桌面 Ubuntu 发行版编译代码 我也
  • 模板通过 const 引用传递

    我已经看过一些类似的问题 但我仍然很困惑 我正在想办法明确地 不是通过编译器优化等 和 C 03 兼容 避免在将对象传递给对象时复制对象专门模板功能 这是我的测试代码 include
  • Java - 为什么我不能使用 charAt() 来查看一个 char 是否等于另一个?

    我想查看字符串中的字符是否等于某个其他字符值 但我不知道字符串中的字符是什么 所以我使用了这个 if fieldNames charAt 4 f 但我收到错误 Operator cannot be applied to char jav l
  • viewDidDisappear 没有在 UINavigationController 上被调用

    我的导航控制器有问题 如果我将视图控制器添加到堆栈中 void tui ToggleListStudy id sender listVC ListViewController alloc init self navigationContro
  • 将样式化的 pandas 数据框导出到 Excel

    我正在尝试使用以下脚本将时尚的数据框导出到 Excel 文件 import pandas as pd import numpy as np np random seed 24 df pd DataFrame A np linspace 1
  • PyCharm:为什么“音频”受到青睐?

    为什么audioop如果我想进口 请优先选择reverse 我的代码包含from django urls import reverse已经存在于许多文件中 为什么 PyCharm 不查看我的其他文件 然后将当前的第二个选项设为第一个选项 我
  • “目录名称无效。”等等,在Windows上使用rabbitmq-plugins

    我正在尝试通过以下方式让 RabbitMQ 在 Windows 10 上运行这些说明 http arcware net installing rabbitmq on windows 但是 当尝试通过 powershell 命令启用管理插件时
  • 使用 vue.js 获取调用元素

    我想获取 vue js 中调用 html 元素以通过 jQuery 修改它 现在 我为每个元素指定类名 索引 然后通过 jQuery 调用它 但这看起来像是一个疯狂的 hack 我想做的事 new Vue el app data testF
  • 为什么中序和前序遍历对于创建算法来确定 T2 是否是 T1 的子树很有用

    我正在看一本采访书 问题是 你有两个非常大的二叉树 T1 拥有数百万个节点 并且T2 有数百个节点 创建一个算法来决定是否T2是一个 的子树T1 作者提到这是一个可能的解决方案 请注意 这里的问题指定T1有数百万 节点 这意味着我们应该注意