问题标签 [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.
algorithm - BST 中节点的 PreOrder Successor
我正在尝试这个问题一段时间,但无法弄清楚算法。我的偏好是迭代地进行。到目前为止,我已经弄清楚了一些事情,但在某些方面不确定。
目前,我的算法看起来像:
- 首先遍历树找到节点
- 在遍历树时,跟踪前一个节点。
- 如果找到该节点,请检查是否存在左子节点,那么这就是后继返回。
- 如果左孩子不存在,则检查右孩子是否存在,即是继任者并返回。
- 如果节点(留给父节点)并且没有左子节点或右子节点,那么我们之前已经保存了 prev 节点,那么 prev 或 prev 的右子节点就是后继节点。
- 但是如果我们找到的节点在父节点的右边并且没有左右子节点,如何找到这个节点的后继节点呢?
这个算法可能有很多缺陷,因为我仍然没有正确理解所有的情况。如果有人有任何想法或算法,请分享。
提前致谢。
java - 前序决策二叉树打印输出
这是基于预购的决策树 这里是树的填充代码
下面是我的代码,我尝试将树划分为左子树和右子树,并将它们放入一个数组列表中。但是对于每个部分,还需要考虑这个子树的高度作为循环数
但输出是
预期的结果应该是
我想要的最终结果是
我知道它可以使用 SringBuilder 为每个子决策使用 3 个空格来完成缩进。但不知道该怎么做,在此之前,需要修复'array input2'
新代码在这里
recursion - Scheme中的预序符号
假设我的“map-diff”函数适用于以下代码。我想知道如何获取算术解析树并以预序表示法输出它。我希望能够在我的“preorder”函数中使用我的“map-diff”函数,但我不知道如何去做。我的基本情况是否正确?
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,15
和3,5,23,54,65,66,45
同时我期望11,6,3,66,65,54,45,15
和5,23,3,66,65,54,45
。我是否理解错误或我的代码有问题?
c++ - 在 C++ 中从预购构建一棵树
我正在处理压缩/解压缩任务。我正在尝试编写一个 C++ 方法来使用来自压缩文件的标题的以下前序遍历来构建树: 001c1b01a01e1d 0 表示内部节点,而 1 表示叶子。每次创建节点时,我都会将该节点的代码设置为 0 或 1,因为我将使用另一种方法来解码树,并且它必须知道如何使用这些代码遍历不同的边。每当我在前序遍历字符串中达到 1 时,我将节点的“符号”字段设置为前序字符串中的以下字符。我无法让它工作。任何人都可以帮忙吗?这是我的代码(“bitsToRead”只表示预购字符串的长度,因此该方法知道何时停止)谢谢!
tree - 广度优先搜索遍历产生预购?
树的广度优先搜索遍历会产生一个字符串,其中树节点是预先排序的。
上述陈述是一个真实的假设吗?如果没有,请告知例外情况。
好的,现在可以看到 DFS(不是 BFS)和预购是等价的。
java - 如何递归查找preOrder中的下一个节点
我想编写一个采用树节点的函数。它应该返回在 preOrder 中获取节点之后访问的下一个节点是什么。我写了这段代码:(这段代码搜索左孩子并返回它。如果临时没有左孩子但它有右孩子,这个函数返回右孩子。但是如果节点是叶子并且没有孩子,它会得到父母直到得到一个有右孩子的节点。)
它确实有效,但我想让它递归。
任何人都可以帮我解决这个问题吗?
提前感谢您的关注。
ios - 将我的应用程序放在 App Store 上的“预购”
我正在 iOS 上制作游戏,我想知道是否可以在我的应用程序上进行“预购”。
示例:我想在五月发布我的游戏。是否可以在 3 月发布但仅用于“预购”?
这是查看应用程序是否吸引人的好方法。
java - 从Java中的扁平列表重建二叉搜索树?
我有这段代码用于从预排序遍历元素的扁平列表中重建二叉搜索树。
我看到这段代码工作,但无法理解如何。这是代码:
根据我对这种方法的理解,不会创建正确的树。因为当控制到达时root.right
,list
是空的。但这种方法显然有效。
我给出了 [5 3 1 4 8 6 9] 的预购输入。构建树后,我对构建的树进行了前序遍历,它给出了与输入列表相同的元素顺序。
编辑:这是我的展平子程序: