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

python - python从递归方法返回一个列表

我使用本书中描述的二叉树 用算法和数据结构解决问题

已经有如下定义的前序遍历方法。

我只想添加访问的节点列表的返回值。所以我可以做类似的事情

我无法从递归方法返回列表。递归一到达“返回”就停止,我尝试过使用变体

或者

有任何想法吗?

0 投票
1 回答
855 浏览

c# - c#中XML前序和后序遍历中的所有元素顺序

我需要一个函数来返回 C# 中所有元素的前序和后序,它返回所有元素的 (XElement, Preorder, Postorder) 列表。我怎样才能做到这一点?

例如,使用此 XML:

我需要这个答案:

我已经编写了这个类,但它在大型 XML 文件中运行缓慢,因为对于每个元素,它都会处理所有节点!

0 投票
4 回答
7060 浏览

algorithm - inorder+preorder如何构造唯一二叉树?

最近,我的问题被标记为重复,就像这样,即使它们不是。所以,让我从以下开始,然后我将解释我的问题。

为什么这个问题不是重复的?

不是在问如何在给出中序和前序遍历时创建二叉树。我要求证明,中序+前序遍历定义了一个唯一的二叉树。

现在,对于原始问题。我去面试了,面试官问了我这个问题。我被卡住了,无法继续。:|

问题: 给定二叉树的中序和前序遍历。证明给定数据只有一棵二叉树。换句话说,证明两个不同的二叉树不能有相同的中序和前序遍历。假设树中的所有元素都是唯一的(感谢@envy_intelligence 指出这个假设)。

我试图用例子说服面试官,但面试官要求的是数学/直观的证明。谁能帮我证明一下?

0 投票
2 回答
218 浏览

algorithm - 给定一个 preOrder 和 inOrder 序列,可能有多少个级别顺序 BST 序列?

当我尝试打印 BST 级别时,这个问题提示了我。

这里有一个

一个 BST 的水平顺序序列与上面pre_orderIn_order[4, 2, 6, 1, 3, 5, 7, 8]

然而,对于同一个预购顺序,这个级别顺序顺序似乎是可能的。[4, 1, 5, 2, 6, 3, 7, 8]. 我不知道怎么做。我试图弄清楚这一点。

我无法在满足所有 pre_order、In-order 和 level order 序列的纸张(绘图)中构建 BST。

0 投票
1 回答
71 浏览

algorithm - 将排序的链表转换为平衡的二叉树不能正确返回?

以下是我为转换linkedListBalanced BinarySearch Tree. 我明白BST了,但它不平衡。为什么会这样?

这是主要方法:

这是我得到的输出(为便于阅读而格式化):

级别顺序和 preOrder 不匹配构建唯一树。这里有什么提示吗?

0 投票
1 回答
722 浏览

java - java中的线程树前序遍历

我正在尝试为java中二进制线程树的前序遍历编写代码。我编写了以下代码,它适用于一些示例,但我担心我忽略了一些边缘场景。

更多信息 一个节点有两个引用leftright分别指向节点的左右子节点。一个名为successor的布尔字段根据中序遍历判断指针是指向子还是后继(如果successor==false:指向子,否则指向中序遍历后继)

如果有人能在这里指出我的逻辑中的缺陷,将不胜感激......

任何帮助,将不胜感激...:)

0 投票
0 回答
71 浏览

java - 有没有java解决方案可以缩短二叉树前序遍历的时间?

当我第一次解决二叉树后序遍历的问题时,我只使用一个堆栈来存储节点,并使用一个列表作为结果。所以时间复杂度显然是N^2。但是如果使用 2 个堆栈,时间复杂度可以简化为 N。

至于前序遍历,我认为使用一个堆栈就足够了。但我的解决方案运行时间仍然停留在中级水平。

那么有没有什么办法可以改善呢?下面是我的代码:

谢谢!

0 投票
3 回答
1205 浏览

python - 在 python 中返回树的预排序列表

我是 python 新手,正在尝试编写一个函数,该函数将递归返回树的预排序列表。我可以得到它来获取预购列表,但是,它带有大量来自与基本案例的递归交互的不需要的空列表。

代码是:

如何获得仅包含每个节点的值的列表的输出(没有空列表等)?

非常感谢,

0 投票
1 回答
1366 浏览

c - 在 c 中按字典顺序打印 trie

所以我正在实现一个尝试将单词存储在字典文件中。我已经实现了插入操作;现在我正在尝试按字典顺序打印。我快得到它了,但我有一个小问题,我不知道如何解决。我还试图记住我的程序的速度,这就是为什么我选择了数组或链表的 trie。这是单个节点的样子:

“end”表示单词的完成(例如,单词 book 中字母 'k' 处的 end == 1;这可以防止在检查单词是否已实际插入树中时产生混淆)。

这是方法:

我插入的词是:boo、book、booking、john、tex、text。它们应该按该顺序打印并分开行。我的输出看起来像:

我知道这可能与我的“保持”数组有关,该数组存储单词的前缀,因此它们不会丢失。我需要在某处将索引设置回零以指示前缀及其所有相关单词(嘘,书,预订是一个很好的例子)的完成,但没有成功。任何帮助将不胜感激,我很乐意进一步澄清我的思考过程。

0 投票
2 回答
81 浏览

java - 我可以将 Collections.sort 与准订单一起使用吗?

全准序(也称为全预序)是一种较弱的排序关系,允许两个不同的元素被认为是“相同大小”。例如,所有字符串的集合是按长度准排序的,因为两个不同的字符串可以具有相同的长度。

现在假设我们有一个字符串列表,我们想按长度排序(最短的优先)。如果两个字符串的长度相同,我们不关心哪个先出现。乍一看,这样写似乎有道理

不幸的是,这是非法的。Comparator 接口的 Javadoc 明确要求比较必须实现总排序。这是违反的,因为 "a".length() - "b".length() 等于 0,但 "a".equals("b") 是假的。

那么,我们应该如何干净地做到这一点呢?干净地说,我的意思是不引入虚假比较,例如通过哈希码或自然排序。