问题标签 [postorder]

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 回答
693 浏览

javascript - 递归后序树遍历而不创建新节点

我想定义一个适用于各种多路树的广义尾递归树遍历。这适用于预购和级别订单,但我在实施后订单遍历时遇到了麻烦。这是我正在使用的多路树:

多路树

所需顺序:EKFBCGHIJDA

只要我不关心尾递归后订单遍历很容易:

另一方面,尾递归方法非常麻烦:

特别是,我想避免创建新节点,这样我就可以遍历任意树,而不必了解它们的构造函数。有没有办法做到这一点并且仍然保持尾递归?

0 投票
2 回答
697 浏览

c - 如何从二叉树制作链表(前/后顺序)

我已经查看了几个问题,但我似乎无法弄清楚发生了什么。我正在尝试将我的二叉树转换为前/后顺序的链表。我的代码返回一个由零组成的链表。我排除了 post-order 的代码,因为在这种情况下它与 pre 基本相同。这是我的相关代码:

0 投票
3 回答
3099 浏览

c++ - PostOrder Traversal 使用一个堆栈

我正在尝试使用堆栈了解 DFS 树遍历。我发现将递归解决方案转换为迭代解决方案以进行前序遍历非常直观。但是,我发现使用此链接很难理解后序遍历。https://www.geeksforgeeks.org/iterative-postorder-traversal-using-stack/。有没有一种直观和简单的思考方式?预购代码:

0 投票
1 回答
487 浏览

haskell - Haskell 中的通用树 = 玫瑰树?玫瑰树的海报?

我应该为树创建一个数据结构,其中每个节点都有未定义数量的分支。我猜这将是一棵玫瑰树。

现在我应该写一个 postorderG 函数,它会在我写的后序序列中给我一个我的将军中所有元素的列表,但它似乎不正确......有人可以帮助我吗?

0 投票
2 回答
74 浏览

c++ - 二叉树运行时误差的后序迭代遍历

我正在做一些 LeetCode 问题(LeetCode 的新问题),并且我编写了一个迭代遍历二叉树的解决方案。我使用了一个堆栈,我相信我的逻辑是有效的,但是 LeetCode 给了我一个运行时错误。我怎样才能解决这个问题?

这是我的代码:

请帮忙,谢谢!

0 投票
1 回答
118 浏览

c - C中的递归后序遍历和sprintf

我正在使用这个函数遍历二叉树。我很确定正确保存新值(跳到“当前输出”)到节点在 sprintf(buffer, "var%i", counter) 上一直失败:我想知道为什么。

更多信息

我正在处理由叶节点创建的二叉树 - 数字和操作节点,在本例中为 * 和 +。我的目标是将每个 operation_node->name 更改为原始 ID。

原始树看起来像:

我正在尝试什么:

所需的输出(类似汇编程序):

电流输出:

问题

如果有人愿意解释为什么这种情况不断发生(并可能提供一些解决方案),我将不胜感激。

0 投票
0 回答
103 浏览

c++ - 使用霍夫曼树解码

下面的代码段没有返回正确的文本。该代码接收指向 Huffman 代码树根节点的指针和二进制文本,然后对其进行转换。但是,每次它返回一个重复的字母。

Node对象的代码:

构建树的代码:

示例树:

示例 I/O: 输入:101010010111 输出:A�A�A��A�AAA

菱形字符是大于 128 的数字。

0 投票
1 回答
330 浏览

c++ - 使用霍夫曼树解码二进制文本

下面的代码段没有返回正确的文本。该代码接收指向 Huffman 代码树根节点的指针和二进制文本,然后对其进行转换。但是,每次它返回一个重复的字母。

Node对象的代码:

构建树的代码:

示例树:

示例 I/O: 输入:101010010111 输出:A�A�A��A�AAA

菱形字符是大于 128 的数字。

0 投票
0 回答
210 浏览

data-structures - 如何进行线程二叉树后序遍历

我想在线程二叉树中进行后序遍历。

如果我想做一个后序遍历,而不是递归,

对于终端节点,我可以通过将链接中的下一个节点地址插入到一个空的子节点字段来移动它们。

但是在父节点的情况下,如果我不经常掌握事情的窍门,则必须以任何方式移动。

例如,在“AB * CD / -”的情况下,我可以去'B' -> '*'来使用B的右空链接字段(线程)。

但是当我去 '*' -> 'C' 或 '/' -> '-'

'*' 和 '/' 两个链接字段都被子节点填满。我不知道该怎么做。

请让我知道您可以如何进行。

使用树链接(不使用线程链接)的父节点的链接已满。

我怎样才能去父节点的父节点。

0 投票
0 回答
135 浏览

tree - 这种方法是否正确“如果( postOrder )的 preOrder 和 Reverse 等于 BST 正好有一个孩子”

输入:pre[] = {20, 10, 11, 13, 12} 输出:Yes 给定的数组表示下面的 BST。在下面的 BST 中,每个内部节点正好有 1 个子节点。因此,输出为真。

此语句是否适用于上述问题“如果( postOrder )的 preOrder 和 Reverse 等于 BST 只有一个孩子”?