问题标签 [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 投票
2 回答
3544 浏览

algorithm - BST 中节点的 PreOrder Successor

我正在尝试这个问题一段时间,但无法弄清楚算法。我的偏好是迭代地进行。到目前为止,我已经弄清楚了一些事情,但在某些方面不确定。

目前,我的算法看起来像:

  • 首先遍历树找到节点
  • 在遍历树时,跟踪前一个节点。
  • 如果找到该节点,请检查是否存在左子节点,那么这就是后继返回。
  • 如果左孩子不存在,则检查右孩子是否存在,即是继任者并返回。
  • 如果节点(留给父节点)并且没有左子节点或右子节点,那么我们之前已经保存了 prev 节点,那么 prev 或 prev 的右子节点就是后继节点。
  • 但是如果我们找到的节点在父节点的右边并且没有左右子节点,如何找到这个节点的后继节点呢?

这个算法可能有很多缺陷,因为我仍然没有正确理解所有的情况。如果有人有任何想法或算法,请分享。

提前致谢。

0 投票
1 回答
539 浏览

java - 前序决策二叉树打印输出

这是基于预购的决策树 这里是树的填充代码

下面是我的代码,我尝试将树划分为左子树和右子树,并将它们放入一个数组列表中。但是对于每个部分,还需要考虑这个子树的高度作为循环数

但输出是

预期的结果应该是

我想要的最终结果是

我知道它可以使用 SringBuilder 为每个子决策使用 3 个空格来完成缩进。但不知道该怎么做,在此之前,需要修复'array input2'

新代码在这里

0 投票
2 回答
733 浏览

recursion - Scheme中的预序符号

假设我的“map-diff”函数适用于以下代码。我想知道如何获取算术解析树并以预序表示法输出它。我希望能够在我的“preorder”函数中使用我的“map-diff”函数,但我不知道如何去做。我的基本情况是否正确?

0 投票
1 回答
68 浏览

c - 树遍历没有给出预期的输出

我在下面有这个简单的代码,我相信这是遍历的标准。问题是我得到了一组特定输入的预期输出,而其他输入却出乎意料。例如,对于输入序列15,3,6,11,45,54,65,3,66,我得到了预期的预购 o/p : 15,3,6,11,45,54,65,66。但是对于序列,45,3,54,65,23,66,5,3我希望预购 o/p45,3,23,5,54,65,66但我得到了45 3 5 23 54 65 66. 对于后订购,我对这两个序列都感到意外,分别获得3,6,11,45,54,65,66,153,5,23,54,65,66,45同时我期望11,6,3,66,65,54,45,155,23,3,66,65,54,45。我是否理解错误或我的代码有问题?

0 投票
2 回答
576 浏览

java - 从 Java 中的 preOrder 数组实现二叉搜索树重建?

我已经按照这个想法和这个C++ 代码从 Java 中的 PreOrder 数组重建二叉搜索树。我不是重新发明算法,而是尝试实现伪代码。我在这里需要帮助。我没有得到正确的输出。我得到的输出低于代码。

我没有得到预期的输出:

0 投票
1 回答
252 浏览

c++ - 在 C++ 中从预购构建一棵树

我正在处理压缩/解压缩任务。我正在尝试编写一个 C++ 方法来使用来自压缩文件的标题的以下前序遍历来构建树: 001c1b01a01e1d 0 表示内部节点,而 1 表示叶子。每次创建节点时,我都会将该节点的代码设置为 0 或 1,因为我将使用另一种方法来解码树,并且它必须知道如何使用这些代码遍历不同的边。每当我在前序遍历字符串中达到 1 时,我将节点的“符号”字段设置为前序字符串中的以下字符。我无法让它工作。任何人都可以帮忙吗?这是我的代码(“bitsToRead”只表示预购字符串的长度,因此该方法知道何时停止)谢谢!

0 投票
0 回答
123 浏览

tree - 广度优先搜索遍历产生预购?

树的广度优先搜索遍历会产生一个字符串,其中树节点是预先排序的。

上述陈述是一个真实的假设吗?如果没有,请告知例外情况。


好的,现在可以看到 DFS(不是 BFS)和预购是等价的。

0 投票
1 回答
1737 浏览

java - 如何递归查找preOrder中的下一个节点

我想编写一个采用树节点的函数。它应该返回在 preOrder 中获取节点之后访问的下一个节点是什么。我写了这段代码:(这段代码搜索左孩子并返回它。如果临时没有左孩子但它有右孩子,这个函数返回右孩子。但是如果节点是叶子并且没有孩子,它会得到父母直到得到一个有右孩子的节点。)

它确实有效,但我想让它递归。

任何人都可以帮我解决这个问题吗?

提前感谢您的关注。

0 投票
7 回答
1144 浏览

ios - 将我的应用程序放在 App Store 上的“预购”

我正在 iOS 上制作游戏,我想知道是否可以在我的应用程序上进行“预购”。

示例:我想在五月发布我的游戏。是否可以在 3 月发布但仅用于“预购”?

这是查看应用程序是否吸引人的好方法。

0 投票
3 回答
1134 浏览

java - 从Java中的扁平列表重建二叉搜索树?

我有这段代码用于从预排序遍历元素的扁平列表中重建二叉搜索树。

我看到这段代码工作,但无法理解如何。这是代码:

根据我对这种方法的理解,不会创建正确的树。因为当控制到达时root.rightlist是空的。但这种方法显然有效。

我给出了 [5 3 1 4 8 6 9] 的预购输入。构建树后,我对构建的树进行了前序遍历,它给出了与输入列表相同的元素顺序。

编辑:这是我的展平子程序: