遛树,父母先行

2024-01-20

访问链接树的所有节点(所有节点都有对父节点和所有子节点的引用,根节点将 null 作为父节点)的最佳方法是什么,以便在其任何祖先之前不会访问任何节点?非递归的布朗尼点。


伪代码:

NodesToVisit = some stack or some list
NodesToVisit.Push(RootNode)

While NodesToVisit.Length > 0
{
   CurNode = NodesToVisit.Pop()
   For each Child C in CurNode
        NodesToVisit.Push(C)
   Visit(CurNode) (i.e. do whatever needs to be done)
}

Edit: 是否递归?
从技术上来说是正确的,正如 AndreyT 和其他人在这篇文章中指出的那样,这种方法是的一种形式递归算法,使用显式管理的堆栈代替 CPU 堆栈,并且递归发生在 While 循环级别。这就是说,它与递归实现不同per se以一些微妙但重要的方式:

  • 只有“变量”被压入堆栈;堆栈上没有“堆栈帧”和关联的返回地址,唯一的“返回地址”隐含在 while 循环中,并且只有一个实例。
  • “堆栈”可以用作列表,从而可以在列表中的任何位置获取下一个“帧”,而无需以任何方式中断逻辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

遛树,父母先行 的相关文章

  • 为什么我们需要检测链表中的循环

    我看到很多关于如何检测链表中的循环的问答 但我想了解的是我们为什么要这样做 换句话说 检测链表中的循环的实际用例是什么 在现实生活中 您可能永远不需要检测链表中的循环 但是执行此操作的算法很重要 我在现实生活中多次使用它们 例如 我经常会递
  • O(n^2) 与 O (n(logn)^2)

    时间复杂度是O n 2 or O n logn 2 better 我知道当我们简化它时 它就变成了 O n vs O logn 2 and logn lt n 但是关于logn 2 n is only less than log n 2 f
  • SQL - 每个级别都有记录的递归树层次结构

    尝试使用 SAS 据我所知 不支持WITH RECURSIVE 在 SQL 中创建经典的层次结构树 这是现有表中的简化数据结构 USER ID SUPERVISOR ID 因此 要构建层次结构 您只需递归连接 x 次即可获取您要查找的数据
  • 带有元数据的 scipy kdtree

    我目前正在寻找一种方法来构建几个 kd 树以快速查询一些 n 维数据 但是 我对 scipy KD 树算法有一些问题 我的数据包括id gt data somedata coordinate x y 我希望能够基于坐标和 k 最近邻居的 i
  • 在大文件中查找重复项

    我有一个非常大的文件 大约有 1500 万个条目 文件中的每一行都包含一个字符串 称为键 我需要使用 java 查找文件中的重复条目 我尝试使用哈希图并检测重复的条目 显然 这种方法向我抛出了 java lang OutOfMemoryEr
  • 如何计算一组字符串的最短唯一前缀?

    这是一个非常常见的算法命令行解析 给定一组预定义的长选项名称 计算唯一标识这些选项之一的最短前缀 例如 对于以下选项 help hostname portnumber name polymorphic 这将是输出 he ho por n p
  • 算法 - 树中所有节点的最大距离

    所以 找到树中两个节点之间的最长路径相当容易 但我想要的是找到从节点出发的最长路径x到树中的另一个节点 对于所有x 这个问题也可以用以下方式表达 计算从给定的树中可以生成的所有有根树的高度 One way of course is to j
  • 为什么使用 no-op 来填补 paxos 事件之间的空白是合法的?

    我正在学习Paxos算法 http research microsoft com en us um people lamport pubs paxos simple pdf http research microsoft com en us
  • RNG 技术的可移植性和可重复性

    我可以使用两种方法之一来创建一个伪随机数序列 该序列具有两个重要特征 1 它可以在不同的机器上重现 2 该序列永远不会重复范围内的数字 直到所有数字都被发出 我的问题是 这两种方法在可移植性 操作系统 Python 版本等 方面是否存在潜在
  • 模式识别算法

    过去我必须开发一个充当规则评估器的程序 你有一个先行词和一些后续词 动作 所以如果先行词评估为真 则执行的动作 当时我用的是修改版RETE算法 http en wikipedia org wiki Rete algorithm RETE 有
  • 为什么 n 按位和 -n 总是返回最右边的位(最后一位)

    这是Python代码片段 1 1 1 2 2 2 3 3 1 看来任何n n总是返回最右边 最后 位 我真的不知道为什么 有人可以帮助我理解这一点吗 这是由于负数以二进制表示的方式 称为二进制补码表示 创建某个数字 n 的补码 换句话说 创
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • 从数字列表中生成所有唯一对,n 选择 2

    我有一个元素列表 假设是整数 我需要进行所有可能的两对比较 我的方法是 O n 2 我想知道是否有更快的方法 这是我在java中的实现 public class Pair public int x y public Pair int x i
  • 如何发现“贪婪”算法?

    我正在读一本关于 贪婪 算法 但我很难发现它们解决真正的 顶级程序员 问题 If I know给定的问题可以用 贪婪 算法来解决 因此编写解决方案非常容易 然而 如果我没有被告知这个问题是 贪婪的 我就无法发现它 用 贪婪 算法解决的问题有
  • 在c#中遍历对象树

    我有一棵由多个对象组成的树 其中每个对象都有一个名称 string id int 以及可能是同一类型的子数组 如何遍历整个树并打印出所有 id 和名称 我是编程新手 坦率地说 我很难理解这个问题 因为我不知道有多少个级别 现在我正在使用fo
  • 期望最大化算法的数值示例[重复]

    这个问题在这里已经有答案了 由于我不确定给出的公式 有人可以提供 EM 算法的简单数字示例吗 一个非常简单的具有 4 或 5 个笛卡尔坐标的坐标就可以了 那这个呢 http en wikibooks org wiki Data Mining
  • 以编程方式分解大量数字

    好吧 所以我有一个巨大的数字f 实际上 这个数字只有 100 多位数字长 我知道这些因子的大小大致相同 如果我的资源和时间有限 我应该使用什么语言和算法 我包括在限制时间内编写算法的时间长度 想法 编辑 我所说的有限是指在尽可能短的时间内
  • 将两个大数作为字符串相除,而不使用java中的Bignumbers

    我需要在不使用 Biginteger 的情况下划分两个大整数 因为数字不能存储在原始类型中 因为我需要从给定的字符串中逐个字符地执行此操作 我已经创建了一个名为 BigNumber 的类 用这个类我可以 Add multiply 比较两个内
  • 循环中的递归算法复杂度(运行时间)

    我想了解您对如何检测以下递归算法的 T n 运行时间 的意见 Charm 是一种用于发现事务数据库中频繁闭项集的算法 频繁闭项集列表是在一组交易 tids 中多次出现的频繁项 例如面包和牛奶是经常一起购买的物品 它们是通过将索引为 i 的当
  • 颜色渐变算法

    给定两种 RGB 颜色和一个矩形 我可以创建一个基本的线性渐变 这博客文章 https bsou io posts color gradients with python关于如何创建它给出了很好的解释 但我想在这个算法中添加一个变量 角度

随机推荐

  • Typescript 类型“never”:如何用于对象字段?

    我想得到这个例子 https stackoverflow com a 62163715 349169工作就像 interface Foo a number b string c boolean type Explode
  • Espresso 测试失败:想要匹配 1 个意图。实际匹配 0 个意图

    我正在尝试测试如果用户登录 我的 SplashActivity 是否可以正确启动 HomeActivity 我查看了 StackOverflow 上的相关问题 这似乎是一个常见问题 但我似乎无法让任何东西发挥作用 我已经观察了我的设备上执行
  • “无法找到 android.server.checkin 的提供商信息”是什么意思?

    在调试我的 Android 应用程序时 我经常收到该错误消息 这是什么意思 如果你想要一个好的答案 你确实需要改进你的问题描述 Manifest xml 中提供者元素上的authorities 属性显然没有提供正确的信息 您能否在 Mani
  • 如何简单解决多依赖版本冲突?

    我已经在android studio flutter中导入了一个项目 但是 出现了大量的版本冲突 如果一个版本解决了其他版本的冲突 那么另一个版本就会上升 我正在尝试获取所有软件包 但它向我显示以下错误 Because date utils
  • 如何获取两个不同数据库中所有表的列表

    我正在尝试创建一个小 SQL 脚本 在 SQL Server Management Studio 中 来获取两个不同数据库中所有表的列表 目标是找出哪些表存在于两个数据库中 哪些表仅存在于其中一个数据库中 我在 SO 上找到了各种脚本来列出
  • 如何使 jquery-ui.dialog 在取消时恢复表单

    以下 javascript 允许设置单选按钮来控制 2 的交替可见性 fieldset s 我添加了一个功能provwarning拦截单选按钮上的单击并确定更改是否会导致记录删除 如果可能的话 该函数会显示一条警告消息 并继续 在 继续 上
  • 使用多个 XSL 文件转换 XML

    我想使用一些 XSL 文件将一些 XML 转换为 HTML 这些 XSL 文件都通过 xsl import 和 xsl include 语句相关 并且都是完成转换所必需的 我知道 XSL 可以工作 因为使用浏览器打开的预先创建的 XML 文
  • 寻找《财富》算法的伪代码

    如果曾经处理过用于生成 Delaunay 三角剖分的 财富 算法的人向我提供该算法的相当低级的伪代码 我将非常感激 我读过维基百科上的一个 但它有点令人困惑 而且看起来很高级 而且我能找到的任何一段代码都存在原始 C 实现的不便 我想用 C
  • React Native - FlatList 不渲染

    注意 我在这个应用程序中使用 Expo 我正在尝试渲染一个FlatList显示打印机列表 这是代码
  • SQL Server 2008 网络版

    有人可以给我一些有关 SQL Server 2008 Web Edition 的信息吗 这是2008年的新版本吗 它有什么样的限制 有人使用成功吗 它提供了哪些 Express Edition 没有提供的功能 SQL Server 2008
  • 如何使用javascript获取cookie的路径

    我设置的Cookie js函数 function setCookie name value expires path cookieStr name escape value if expires expires setExpiration
  • Meteor - 使用集合中的文档渲染模板

    基本上 我只是想用以下内容渲染模板resultMongoDB find 调用返回的文档的属性 我已经开启自动订阅了 我有一个 html 模板
  • 如果我使用 AJAX,文件上传过程中的 HttpPostedFile 为 NULL

    我在我的 asp net MVC 项目中使用文件上传功能 它运行得很好 直到我开始在我的页面上使用一些 AJAX 功能 Ajax 页面上的 HttpPostedFile 始终为 NULL 如何在我的页面上调用ajax来解决这个问题 因为你无
  • 使用 nls() 进行非线性拟合在初始参数估计时给出奇异梯度矩阵。为什么?

    这是我第一次尝试在 R 中拟合非线性模型 所以请耐心等待 Problem 我试图理解为什么nls 给我这个错误 Error in nlsModel formula mf start wts singular gradient matrix
  • 如何在 Rust 中编写函数?

    我正在尝试编写一个由两个函数组成的函数 最初的设计非常简单 一个函数接受两个函数并返回一个组合函数 然后我可以将该函数与其他函数组合 因为 Rust 没有剩余参数 我遇到了用令人沮丧的无用编译器错误构建的墙 我的撰写功能 fn compos
  • PHP exec() vs system() vs passthru()

    有什么区别 每个功能是否有特定的情况或原因 如果是 您能举一些这些情况的例子吗 PHP net 说它们是用来执行外部程序的 参见参考资料 http php net manual en function exec php从我看到的例子来看 我
  • 多个dex文件定义了/BuildConfig,找不到原因:

    我正在使用新的 gradle 构建系统 但面临以下问题 UNEXPECTED TOP LEVEL EXCEPTION com android dex DexException Multiple dex files define Lcom k
  • 检查一个字符串是否与另一个字符串相似[重复]

    这个问题在这里已经有答案了 我做了一些研究 发现一些主题会检查一个字符串是否是字符串中的子字符串 并选择与指定字符串最接近的字符串 但是我如何检查一个字符串是否与另一个字符串相似并提供真 假反应 IE String 1 JAVA IS A
  • djangorest框架列表查询由于日期格式而自定义json数组结果响应

    我有这个 Django REST API 我想自定义 json 响应的列表查询结果 原因是日期格式和可能的其他格式 这是 Rest API 问题是 create at 我希望它的格式如下 Y m d H M 以下代码没有任何格式 它只是列出
  • 遛树,父母先行

    访问链接树的所有节点 所有节点都有对父节点和所有子节点的引用 根节点将 null 作为父节点 的最佳方法是什么 以便在其任何祖先之前不会访问任何节点 非递归的布朗尼点 伪代码 NodesToVisit some stack or some