问题标签 [preorder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
1671 浏览

algorithm - 不保留已访问标志的迭代后序遍历

为什么有必要为迭代后序遍历而不是为中序或前序迭代遍历保留已访问标志。

是否可以在不保留已访问标志的情况下进行后订单遍历?

0 投票
6 回答
78475 浏览

data-structures - 何时使用前序、后序和中序二叉搜索树遍历策略

我最近意识到,虽然在我的生活中使用了很多 BST,但我什至从未考虑过使用除中序遍历之外的任何东西(虽然我知道并知道使程序适应使用前序/后序遍历是多么容易)。

意识到这一点后,我拿出了一些旧的数据结构教科书,寻找前序和后序遍历有用性背后的原因——尽管他们并没有说太多。

什么时候实际使用预购/后购的例子有哪些?什么时候比有序更有意义?

0 投票
3 回答
5784 浏览

algorithm - 检查 O(1) 中是否有 2 个树节点与预处理相关(祖先/后代)

检查2个树节点是否相关(即祖先-后代)

  • 在 O(1) 时间内用 O(N) 空间解决它(N = 节点数)
  • 允许预处理

而已。我将在下面介绍我的解决方案(方法)。如果您想先考虑自己,请停下来。


对于预处理,我决定进行预排序(首先递归地遍历根,然后是子节点)并为每个节点提供一个标签。

让我详细解释一下标签。每个标签将由逗号分隔的自然数组成,例如 "1,2,1,4,5" - 该序列的长度等于(节点的深度 + 1)。例如,根的标签是“1”,根的孩子将有标签“1,1”,“1,2”,“1,3”等。下一级节点将有标签,如“1,1,1 ", "1,1,2", ..., "1,2,1", "1,2,2", ...

假设一个节点的“序号”是其父节点的子列表中的“这个节点的从1开始的索引”。

通用规则:节点的标签由其父标签后跟逗号和节点的“订单号”组成。

因此,要回答 O(1) 中两个节点是否相关(即祖先-后代),我将检查其中一个节点的标签是否是另一个节点的“前缀”。虽然我不确定这些标签是否可以被认为占据 O(N) 空间。

预计会有任何有修复或替代方法的批评者。

0 投票
1 回答
987 浏览

binary-tree - 二叉树前序和后序遍历相同吗?

是否存在这种情况为真的二叉树?

我不这么认为,除非二叉树只包含一个根节点。

0 投票
1 回答
262 浏览

algorithm - 如何从 Preorder 和 Children charsequence 形成二叉树

问题是从预排序列表和每个节点具有的子节点数量的序列构建二叉树。例如:“BAC”和“200”可能是一个输入,导致“ABC”的有序列表。

我目前的方法是检查'2'的第二个字符序列(带有数字的那个),它有两个孩子,'0',它没有孩子,'L',它有一个左孩子,和'R',它有一个正确的孩子。为此,我使用以下方法:

它基本上处理 childCodes 序列以确定树的每个分支在哪里中断。问题是对于较大的树,它只处理前几个项目,然后折叠。(较大树的示例是:“ABCDEFGHIJKLMNOPQRSTU”,子代码为“220022002200LRR20RLL0”)

0 投票
1 回答
106 浏览

javascript - 带有javascript的Inorden路由html

如何使用 javascript 对 html 树中的元素进行预排序遍历

在此处输入图像描述

img src = http://www.sitepoint.com/hierarchical-data-database-2/ (Great Article) , 假设 box 是一个 html 元素

例子:

0 投票
2 回答
14882 浏览

algorithm - 需要知道多少次遍历才能构造一个 BST

我对不同站点上的许多文章感到非常困惑,这些文章涉及Binary Search Tree从任何一个遍历(prepostin-order)或其中任何两个的组合构建一个。例如,在这个页面上,它说给定pre,postlevel顺序遍历,连同in-order遍历,可以构造BST. 但是在这里那里,他们向我们展示了如何单独构建一个BSTpre-order此外,他们在这里向我们展示了如何构造BSTfrom givenprepost-ordertraversals。在其他一些站点中,我找到了一个BST仅从post-order遍历构造 a 的解决方案。

现在我知道给定inorderpre-order遍历,可以唯一地形成一个BST. 至于我提供的第一个链接,虽然他们说我们不能构造BSTfrompre-orderpost-order,但我不能对post-order数组进行排序以获取它的inorder遍历,然后使用它和pre-order数组来形成BST? 这与第四个链接中的解决方案相同还是不同?并且pre-order仅给出,我可以对它进行排序以获得in-order,然后使用它和pre-order来获得BST. 同样,这是否必须与链接 2 和 3 的解决方案不同?

具体来说,什么足以唯一地生成BST?如果不需要唯一性,那么我可以简单地对其进行排序以获取遍历,并从中递归地in-order构建 N 个可能的 s 之一。BST

0 投票
2 回答
614 浏览

c++ - 仅给定一次遍历时找到二叉树的其他两次遍历

我知道当给定二叉树的中序和前序遍历作为字符串时,您可以重建二叉树,但是仅在给定中序遍历的情况下,是否可以找到后序和/或前序遍历?

0 投票
2 回答
4574 浏览

c++ - 基于向量的二叉树遍历

我有一个基于向量的二叉树,需要使用各种遍历方法对树中的每个值应用一个函数。使用递归函数很容易实现前序遍历,但我在使用中序遍历和后序遍历时遇到了麻烦。如果有人可以帮忙,那就太好了!

我应该包括一些额外的信息:我正在使用一个节点向量,每个节点都包含一个布尔变量,说明该节点是否被填充和一个模板化的数据变量。每个节点存储在索引“i”中,而其左子节点存储在索引“2i+1”,右子节点存储在“2i+2”。

为了对列表应用前序遍历,我首先处理了存储在索引 0 处的数据,然后调用了这个递归函数

两次以索引 1 和 2 开头作为我的“n”参数。

0 投票
1 回答
5349 浏览

c - 编程二叉树 preOrder 函数

我正在尝试编写一个递归函数来预先打印出这些值。但是,由于某种原因,它一直打印出与我的 inOrder 函数相同的内容。postOrder 函数可以正常工作,但我必须为那个函数稍微不同地执行递归函数。你们能看看我下面的代码,让我知道有什么问题吗?我真的很感激,因为这整天给我带来麻烦。提前致谢