递归展开树

2024-03-29

我正在尝试实现一个自下而上的递归展开树。我递归到需要展开的节点,并找到该节点的父节点和祖父节点。然后我就可以根据情况选择之字形或之字形。问题是完成此操作后,我将已展开一次的节点返回到先前的递归调用。先前的递归调用引用了该节点的父节点,该节点现在是该节点的子节点。如何在向上递归时展开节点?


如果我没记错的话,当您递归到目标节点时,您会构建一棵左树和右树。当找到目标时,使用目标的(原始)子节点构建最终的左树和右树,将生成的树附加为目标的新子节点,并以尾递归方式返回结果(即,所有方式备份堆栈而无需进一步修改)。

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

递归展开树 的相关文章

  • 如何获得字符串的所有字谜

    我试图找到一个字符串的所有可能的字谜并仅使用递归将它们存储在数组中 我被困住了 这就是我所拥有的一切 int main const int MAX 10 string a ABCD string arr 10 permute arr a 0
  • 用于插入/删除/排名/选择查询的最佳数据结构/算法

    到目前为止 我知道像AVL树和红黑树这样的自平衡BST可以在O log n 次内完成这些操作 然而 要使用这些结构 我们必须自己实现AVL树或RB树 我听说有一个算法 实现这四个操作而不使用自平衡 BST 有了我们自己定义的结构 我们就需要
  • 稀疏矩阵中的最大和子矩形

    求一个子矩形中的最大和NxN矩阵可以完成O n 3 正如其他帖子中指出的 使用 2 d kadane 算法的时间 然而 如果矩阵是稀疏的 具体来说O n 非零条目 可以O n 3 时间被打败了吗 如果有帮助的话 对于我感兴趣的当前应用程序
  • 如何设置K-means openCV c++的初始中心

    我正在尝试使用 OpenCv 和 Kmeans 对图像进行分割 我刚刚实现的代码如下 include opencv2 objdetect objdetect hpp include opencv2 highgui highgui hpp i
  • 将非平凡函数应用于 data.table 的有序子集

    Problem 我正在尝试使用我新发现的 data table 功能 永久 来计算一堆数据的频率内容 如下所示 Sample Channel Trial Voltage Class Subject 1 1 1 196 82253 1 1 1
  • 在 Clojure 中退出 Recur 循环

    我想跳出下面的循环 并在第 10 行计算结果为 true 时返回最佳最小移动 我查看了 print 语句的输出 当第 10 行的计算结果为 true 时 它 找到了我正在查找的数据 但仍然重复出现 在 Clojure 中 有没有办法在语句计
  • 为什么 Java 中的 hashCode() 可以对不同对象返回相同的值?

    引用我正在读的书中的一段话首先Java http www amazon co uk Head First Java Kathy Sierra dp 0596009208 关键是 哈希码可以相同 但不一定保证对象相等 因为使用的 哈希算法 h
  • 使用reduce方法的斐波那契数列

    于是 我看到有人用reduce方法来计算斐波那契数列 这是他的想法 1 0 1 1 2 1 3 2 5 3 对应于 1 1 2 3 5 8 13 21 代码如下所示 def fib reduce n initial 1 0 dummy ra
  • 跟踪 C++ 中递归函数被调用的次数

    我正在尝试编写一个程序 该程序具有一个参数是字符串向量的函数 我想在该函数上使用递归 但每次调用该函数时 我想更改参数 例如 fun stringArray i 其中 i 是调用该函数的次数 因此 以更简单的方式 如下所示 但我需要跟踪函数
  • 从日志文件中获取前 100 个 URL

    我的一位朋友在接受采访时被问到以下问题 谁能告诉我如何解决它 我们有一个相当大的日志文件 大约 5GB 日志文件的每一行都包含一个用户在我们网站上访问过的 URL 我们想要找出用户访问最多的 100 个 URL 怎么做 如果我们有超过 10
  • 如何求解:T(n) = T(n - 1) + n

    我已经解决了以下问题 T n T n 1 n O n 2 现在 当我解决这个问题时 我发现界限非常松散 我是否做错了什么 或者只是这样 您还需要一个递归关系的基本情况 T 1 c T n T n 1 n 为了解决这个问题 您可以首先猜测一个
  • C# 中类似图的实现

    所以我有一个对象 我们称之为 Head 它有一个对象列表 C C1 C2 C3 T T1 T2 和 M M1 M2 并且所有这些都是相互关联的 例如 Head gt C1 C2 C3 T1 T2 M1 M2 T1 gt C1 C2 T2 g
  • 在 O(n) 时间内找到 n x n 矩阵中的局部最小值

    所以 这不是我的家庭作业问题 而是取自 coursera 算法和数据结构课程的未评分作业 现已完成 You are given an n by n grid of distinct numbers A number is a local m
  • 将嵌套字典中的所有键从camelCase转换为snake_case

    我有一本类似这样的字典 firstName abc lastName xyz favoriteMovies Star Wars The lone ranger favoriteCountries country China capitalC
  • 使用主方法求解 T(n) = 2T(n/2) + n/log n 和 T(n) = 4T(n/2) + n/log n 之间的差异

    我最近偶然发现了一个资源 其中 2T n 2 n log ntypeMM 宣布复发无法解决 我接受它作为一个引理 直到今天 另一种资源被证明是矛盾的 在某种意义上 根据资源 下面的链接 其中的 Q7 和 Q18 是建议 分别在问题中的1和2
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla
  • 确定解决迷宫问题的最小线段数

    我有一个问题 我需要定义一个具有最少数量的顶点的多边形 该多边形与不透明的图像中的每个像素相交或包含每个像素 令 N 为图像中的像素数 我唯一的假设是图像的边界 孔 内不能包含透明像素 并且至少有两个像素是不透明的 举个例子 假设我有以下图
  • 寻找距离原点最近的 100 颗恒星的算法

    首先让我提出正确的问题 问 有一个文件包含超过一百万个点 x y 每个点代表一颗星星 a b 处有一颗行星地球 现在 任务是构建一种算法 返回距离地球最近的 100 颗恒星 您的算法的时间和空间复杂度是多少 这个问题在各种采访中被问过很多次
  • php 删除特定文件夹及其所有内容

    我正在使用 php 删除包含已删除帖子图像的文件夹 我正在使用下面的代码 这是我在网上找到的并且做得很好 我想知道当一个文件夹中有其他文件夹时 如何只删除其中的特定文件夹 当我使用下面的代码时 如何才能做到这一点 使用 dev images
  • 最慢的计算复杂度(Big-O)

    在这些算法中 我知道 Alg1 是最快的 因为它是 n 平方的 接下来是 Alg4 因为它是 n 的立方 然后 Alg2 可能是最慢的 因为它是 2 n 这应该具有非常差的性能 然而Alg3和Alg5在我的阅读速度方面还没有遇到过 这两种算

随机推荐

  • 在 Windows 8 C# 上解压缩 ZIP 文件

    我正在为 Windows 8 构建一个 Metro 风格的应用程序 我有一个从 Web 服务下载的 zip 文件 我想解压它 我已经看到了压缩和解压缩的示例 但这需要单个文件来压缩 解压缩它 我有一个需要提取的完整目录结构 这是我到目前为止
  • 如何将具有自定义扩展的对象添加到 cmake 库?

    我想将一些对象文件添加到 CMake 静态库 但它们有自定义扩展名 这是我尝试过的 set SRCS testfile cxx jsobj js add library testlib STATIC SRCS 制作完成后 CMake 会调用
  • 如何在 MassTransit 3.0 中使用分散/聚集模式实现传奇

    吉米 博加德 Jimmy Bogard 描述麦当劳快餐连锁店here https lostechies com jimmybogard 2013 03 11 saga implementation patterns observer 将其与
  • Angularjs ngResource '@id'

    我有一个快速的问题 在 Angular JS 中 以下 Rails 应用程序代码中的 id 来自哪里 比如哪个对象 var User resource users id id id 我知道它设置了默认 id Thanks 来自 Angula
  • Javascript:将文本附加到div中?

    我想使用 javascript 将时钟附加到 div 内部 这是我的代码
  • 如何确定我的应用程序是否处于活动状态(具有焦点)

    有没有办法判断我的应用程序是否处于活动状态 即它的任何窗口都有 IsActive true 我正在编写信使应用程序 并希望它在不活动且有新消息到达时在任务栏中闪烁 使用 P Invoke 和循环 System Runtime Interop
  • SQL中的case语句,如何返回多个变量?

    我想在我的 case 语句中返回多个值 例如 SELECT CASE WHEN
  • Swift 3 中的协议扩展 [重复]

    这个问题在这里已经有答案了 我想要一个默认属性UIImageView 这将是isFlipped 我可以通过子类化来做到这一点UIImageView并添加一项属性isFlipped 但我想使用此协议和扩展 但一段时间后它崩溃了 下面是我的代码
  • 无法从 root(或 sudo)使用 NVM

    我注意到我的应用程序在运行时使用不同版本的 NodeJSsudo node v v0 10 23 sudo node v v0 11 8 pre This v0 11 8 pre给我带来了一些问题 所以我绝对不想使用它 但我无法将其更改为r
  • ANTLR 生成无效的 java 异常并抛出代码

    这些天我一直在使用 ANTLRwork 1 5 和 Antlr Runtime 3 5 这是我发现的一个奇怪的事情 Antlr 正在为我生成这种 java 代码 public final BLABLABLAParser addExpress
  • 如何正确关闭MappedByteBuffer?

    这是我正在运行的代码 import java io RandomAccessFile import java nio MappedByteBuffer import java nio channels FileChannel public
  • S/mime 时间戳支持

    好的 现在我已经有了来自 TS 提供商的时间戳 我该如何将其放入哑剧消息中才能符合标准 据我所知 没有邮件程序支持时间戳 这不会成为问题 因为我将自己处理 mime 消息 不过我想让它成为标准方式 有什么例子吗 Thanks 我认为 Mic
  • 名称中的前导箭头在 clojure 中意味着什么

    在学习 Clojure 时 我遇到了如下代码 gt defrecord Person name age user Person gt gt Person john 40 user Person name john age 40 gt Per
  • 部分模板专业化歧义

    我不明白为什么 main 中的语句不明确 template
  • 如何在hibernate注释类中使两列作为主键

    这是我的注释类 我想要userId and groupId列都作为主键 我发现了更多问题 Question https stackoverflow com q 10422680 3156758 关于这个 但没有找到相关答案 我的声誉较差 所
  • 在构建路径中出现 JRE 系统库未绑定错误

    在构建路径中出现 JRE 系统库未绑定错误 尝试了以下链接中的所有建议 但不起作用 我有jdk 1 6 0 29 我也尝试安装其他版本但没有帮助 JRE 系统库 WebSphere v6 1 JRE 未绑定 https stackoverf
  • Rails 中的 example.com/controller 和 example.com/controller/ 有什么区别?

    我有一个 PostsController 对于示例来说不是必需的 但在粘贴片段时会有所帮助 并且我正在使用current page 顾名思义 找出正在显示的页面 我得到了看起来很奇怪的结果 current page 如果我去的话会返回不同的
  • 如何在 Python 2.7 中实现 GMRES 的 ILU 预处理器?

    我正在尝试比较带 ILU 预处理器和不带 ILU 预处理器的 GMRES 求解器 当未应用预处理器时 它会运行并提供正确的答案 x 1 1 1 但是 我似乎无法找到正确应用预处理器的方法 如何让这段代码与 ILU 预处理器一起运行 impo
  • 具有大量动态子域的站点的站点地图

    我正在运行一个允许用户创建子域的网站 我想通过站点地图将这些用户子域提交给搜索引擎 但是 根据站点地图协议 和 Google 网站管理员工具 单个站点地图只能包含来自单个主机的 URL 最好的方法是什么 目前我有以下结构 站点地图索引位于
  • 递归展开树

    我正在尝试实现一个自下而上的递归展开树 我递归到需要展开的节点 并找到该节点的父节点和祖父节点 然后我就可以根据情况选择之字形或之字形 问题是完成此操作后 我将已展开一次的节点返回到先前的递归调用 先前的递归调用引用了该节点的父节点 该节点