遛树,父母先行

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(使用前将#替换为@)

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

  • 序列和与 GCD

    大约一个月前 我在编程挑战中遇到了这个问题 但社论尚未发布 所以我在这里问 有一个大小为 N 的数组 A 求 A 的 K 个长度子序列的总和 GCD Example 如果 A 1 2 3 且 K 2 1 2 3 总和 1 GCD 3 1 3
  • 如何在 JavaScript 中构建树模式匹配算法?

    好吧 这是一个有点复杂的问题 但是 tl dr 基本上是如何使用 模式树 解析 实际树 如何检查特定的树实例是否与特定的模式树匹配 首先 我们有我们的结构模式树 模式树通常可以包含以下类型的节点 sequence节点 匹配一系列项目 零个或
  • 字符串 c 的二叉树

    我正在尝试实现一个能够在 c 中保存字符串的二叉树 在让代码适用于整数之后 我尝试稍微修改它以处理字符数组 现在我似乎完全破解了代码 但不知道如何破解 任何帮助表示赞赏 include
  • 当给定块大小时反转单链表

    有一个单连接链表 并给出了块大小 例如 如果我的链表是1 gt 2 gt 3 gt 4 gt 5 gt 6 gt 7 gt 8 NULL我的块大小是4然后反转第一个4元素 然后是第二个 4 个元素 问题的输出应该是4 gt 3 gt 2 g
  • 坐标算法 - 绕中心旋转

    通过查看这张图片 我想您会很好地理解我的问题 图片已删除 网址不再有效 现在返回广告 所以基本上我想要一个函数 它接受一个对象作为参数 并根据我之前添加的对象数量为该对象提供正确的坐标 假设我将所有这些对象添加到一个数组中 objectAr
  • 我应该对算法使用递归还是记忆化?

    如果我可以选择使用递归或记忆来解决问题 我应该使用哪一个 换句话说 如果它们都是可行的解决方案 因为它们提供了正确的输出并且可以在我正在使用的代码中合理地表达 那么我什么时候会使用其中一个而不是另一个 它们并不相互排斥 您可以同时使用它们
  • 如何计算 3D Morton 数(交织 3 个整数的位)

    我正在寻找一种快速计算 3D Morton 数的方法 这个网站 http www graphics stanford edu seander bithacks html InterleaveBMN有一个基于幻数的技巧来处理 2D Morto
  • 使用 C++ 和 BOOST 读取 JSON 文件

    HTTP 服务器向我发送一个 JSON 响应 字符串 如下所示 folders id 109 parent id 110 path 1 105 110 id 110 parent id 105 path 1 105 files id 26
  • 使用什么算法来确定使系统达到“零”状态所需的最小操作数?

    这是一种更通用的问题 不是特定于语言的 有关要使用的想法和算法的更多信息 系统如下 它登记朋友群体之间的小额贷款 Alice and Bill要去吃午饭 比尔的卡坏了 所以爱丽丝支付了他的餐费 10 美元 第二天Bill and Charl
  • 删除近排序数组中未排序/离群元素

    给定一个像这样的数组 15 14 12 3 10 4 2 1 我如何确定哪些元素乱序并删除它们 在本例中为数字 3 我不想对列表进行排序 而是检测异常值并将其删除 另一个例子 13 12 4 9 8 6 7 3 2 我希望能够删除 4 和
  • 为什么 Dijkstra 算法使用减密钥?

    Dijkstra 教给我的算法如下 while pqueue is not empty distance node pqueue delete min if node has been visited continue else mark
  • 用于查找最近邻居的空间划分算法如何工作?

    为了找到最近的邻居 空间分区 http en wikipedia org wiki Nearest neighbor search Space partitioning是算法之一 它是如何工作的 假设我有一组 2D 点 x 和 y 坐标 并
  • String.contains() 的时间复杂度

    String contains 的时间复杂度是多少 假设 n 是与另一个长度为 k 的字符串进行比较的字符串的长度 如果不知道您感兴趣的 String contains 的实际实现 就没有答案 或者你打算使用什么算法 一个完全幼稚的实现可能
  • 我如何开始玩五子棋?

    我读到Gomoku http en wikipedia org wiki Gomoku它可以使用 Minimax 和 Alpha Beta 剪枝算法来实现 所以 我阅读了这些算法 现在了解了游戏将如何解决 但是当我坐下来编写代码时 我面临着
  • 数组所有可能的组合

    我有一个字符串数组 ted williams golden voice radio 我希望这些关键字的所有可能组合采用以下形式 ted williams golden voice radio ted williams ted golden
  • 从二叉堆中查找第 k 个最小元素的 O(klogk) 时间算法

    我们有一个 n 节点二叉堆 其中包含n不同的项目 根部的最小项目 为一个k lt n 发现O klogk 时间算法选择kth堆中的最小元素 O klogn 很明显 但无法找出O klogk 一 也许我们可以使用第二个堆 但不确定 好吧 你的
  • 添加边后更新最大流量

    考虑我们有一个网络流量 并使用 Edmond Karp 算法 我们已经拥有网络上的最大流量 现在 如果我们向网络添加任意边 具有一定容量 更新最大流量的最佳方法是什么 我正在考虑更新关于新边缘的残差网络 并再次寻找增强路径 直到找到新的最大
  • while循环的时间复杂度是多少?

    我正在尝试找出 while 循环的时间复杂度 但我不知道从哪里开始 我了解如何找到 for 循环的复杂性类别 但是当涉及到 while 循环时 我完全迷失了 关于从哪里开始有什么建议 提示吗 这是一个问题的示例 x 0 A n some a
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 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