问题标签 [n-ary-tree]

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 投票
1 回答
870 浏览

c - 遍历 n-Ary 树级别顺序

让结构由下式给出:

下面的代码应该给出级别中的遍历

给定树:

它返回

但预期是 1 2 3 4 5 6 7。我已经仔细检查了 Pre、Pos 和 In order 遍历函数,它们都正确返回,如下所示:

想弄清楚在我的职能中可能会误导我的事情

0 投票
1 回答
2890 浏览

c++ - 在此范围错误中未声明如何修复

我编写了一个代码来打印和查找 n 叉树中节点的总和,但我得到一个错误并且我无法修复它。

错误:'children' 没有在这个范围内声明 q.push(children[i]); 我该如何解决?这个错误是什么意思?

0 投票
1 回答
192 浏览

c - 第一个子级中的节点数 - 下一个兄弟树

我必须编写一个函数来查找第一个子级的节点数 - 下一个兄弟 N-ary 树。我的功能是:

但它不起作用。有人能帮我吗?

0 投票
1 回答
1096 浏览

c++ - N-Ary Tree C++ - 如何找到节点的级别

我想返回给定节点的级别。我已经能够为二叉树做到这一点,但对于 n 叉树,没有办法运行它。有任何想法吗 ?

对于二叉树,解决方案是:

其中“ptr”是搜索级别的节点。谢谢你。这是N-Ary Tree的结构:

如果我使用这棵树:

我尝试过,但该函数仅返回节点 17 和 15 的确切级别。使用以下代码:

0 投票
0 回答
786 浏览

c++ - 数据结构、树、n叉树、DFS

我正在解决一个基于 n 叉树的简单问题。问题很简单,找出士兵之间握手的总数,其中树的每个节点代表士兵。只有祖先节点可以握手。

https://www.hackerearth.com/practice/data-structures/trees/binary-and-nary-trees/practice-problems/algorithm/comrades-ii-6/

这是 2552 年,人类刚刚赢得了一场与入侵我们太阳系的非常强大的外星种族的战争。人类军队进入庆祝模式!

军队有n个士兵。士兵是从 1 到 n 的数字。军队有优势等级。每个士兵都有一个直属上司。一个士兵的上级的上级也是那个士兵的上级。因此,一名士兵可能有一个或多个上级,但只有一个直接上级。

每个士兵都必须祝贺其他每个士兵。对于一对士兵来说,如果其中一个是另一个的上级,他们会握手。否则,他们会碰拳头。

您将获得所有士兵的直接上级名单。你的工作是告诉你会有多少次握手和拳头碰撞。

我的问题是我使用 map 应用了 N-ary 树概念,其中int关键元素存储父元素并vector of int作为其子元素,并应用了 DFS,但在第二次迭代后我的值发生了变化,例如:

因此,我的代码进入循环(0 到 3,然后 3 到 0),因此出现分段错误。我完全搞砸了,尝试了一切,但什么也没发生。

这是我的代码:



我想知道为什么会这样,我的错在哪里。这种方法有什么问题?我知道还有更多方法,但为什么会失败?

0 投票
1 回答
365 浏览

algorithm - 从坐标列表和连接它们的边列表创建一个 k-ary 树。

我有一个节点/顶点列表,以及连接这些节点的线/边列表。这些列表没有以任何方式排序或排序,但包含特定数据集的所有边和节点。

边是由笛卡尔坐标定义的线段,(x1,y1) 和 (x2,y2),每个节点位置也用坐标表示,形式为 (x,y)。所附图像描绘了一个典型的测试用例,清楚地显示了两棵树,根为 R1 和 R2,每个节点,包括叶节点(标记为 Lx,以及突出显示的橙色文本和蓝色圆圈)以相应的坐标显示。

每条边表示为:

从所附图像中,很明显边缘 N1-N2 将表示为 p1= (0,0), p2=(20,20) 或 p1 =(20,20), p2 = (0,0)。顺序是随机的。

假设 1:节点 R1 和 R2 可以清楚地识别为根节点,因为它们上的节点类型。(带有红色外圈的同心圆)。假设 2:直接连接到节点的所有边的列表也是可用的,例如,节点 N8 将具有段:N8-L7,N8-R2,N8-N9,N8-N7。

我的问题是如何在 C# 中编写一个函数,它有两个输入,一个边列表和一个节点列表,并返回一个根节点,或者参考子节点的树的根节点,这也是相同的/与附图中所描绘的内容相符。

我已经能够列出每个节点的边缘,但无法找出构造树的方法。我已经阅读了关于Kruskal's Algorithm 的内容,但我不确定我是否可以使其适应这个问题。我不确定它是否会保留图中所示的顺序。

所有代码都在 C# 中,但任何 C 风格的语言解决方案都可以。

注意:我在这个网站上看到的答案假设树节点在父节点和子节点方面的顺序是已知的。我可以说两个节点由一条边连接,但无法确定哪个节点是父节点,哪个是子节点。

谢谢,

格雷格 M

0 投票
3 回答
2782 浏览

python-3.x - 树中不同路径的数量,该路径中节点的值大于或等于 K

问题陈述:
给你一个整数N,表示该树中的节点数。现在,您需要计算树中有多少不同的路径,使得该路径中的最小节点值大于或等于k

输入格式:

  1. 第一行包含该树中的节点总数N和一个正整数值K
  2. 下一N-1行包含一对整数u, v(值不是逗号分隔的),表示树中的节点u和之间有一条边。v

例子:

输入:

预期输出:

编辑:我想不出如何解决这个问题。所以,请给我一个提示,以便我可以进一步尝试实现它。即使是最轻微的帮助,我也将不胜感激。

更新:

在任何情况下,对此类问题采取天真的方法都不会通过。解决方案的复杂度应该是 O(n**2) 或 O(nlogn)。

0 投票
1 回答
126 浏览

algorithm - Given a tree find the product of two values in the subtree rooted at a particular node such that the product has minimum number of zeros?

There will be q queries to the problem. In each query, you will be given a random node in the whole tree. Each node of the tree stores some integer value. The solver needs to give the minimum number of zeroes trailing the product of any two numbers in any two nodes in the subtree rooted at the given node.

I thought of storing multiple of 2s and 5s in every node and calculate a minimum number of zeros for every node in a bottom-up manner.

0 投票
1 回答
292 浏览

java - 从 txt 文件构建 n 叉树

我正在为大学做作业。是我第一次使用树作为数据结构,我不明白如何在 Java 中实现它。我必须从 .txt 文件中读取这样的字符串
(1 (2 (5 (13) 6 7) 3 (8 9) 4 (10 11 12)))

其中圆括号是以这种方式表示根和子的树的级别的分隔符 --> (root (soon1 Soon2) )

这棵树的结构是这样的:

我已经实现了一种读取 .txt 文件的方法,但我不知道如何将值存储在不同的级别并将它们标记为根或子级。

0 投票
1 回答
514 浏览

flutter - Dart:N-ary 树的实现

我有一个大学项目,我需要在 dart 中实现一个 N-ary 树。

到目前为止,这是我的节点

我被困在如何实现以下方法上。我将尝试通过以下示例解释我需要什么

A 是根,有 3 个孩子:B、C 和 D。B 有 2 个孩子:E 和 F。E 有 1 个孩子:G。

在此处检查树示例

  1. 如何将根/父节点/子节点添加到树 => 如何添加 A 、 B 和 E
  2. 如何从树中删除一个节点。=> 如何删除 B。它也应该删除它的孩子。
  3. 当父级作为参数传递(在单个级别上)=> 如何获取 A 上的实际消息时,如何检索父级和所有可能的子级的“实际消息”?方法也应该在 B、C 和 D 上返回实际消息
  4. 如何检索最长路径的节点数=>最长路径的节点数是从根到最后一个节点的路径。在我的情况下是4。
  5. 如何在到达根的任何节点上检索树的所有父节点的节点数和列表。=> G 的节点数为 4,G 的所有父节点列表为 E、B 和 A。

任何有关如何执行上述操作的代码或信息将不胜感激。这是我被困在同一件事上的第三天。

谢谢