问题标签 [recursive-datastructures]

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

php - 如何将这个 PHP 数组结构变成多维树?

我有一个二维 PHP 数组,我需要将它变成一棵树。每个内部数组中的“路径”值是当前节点的枚举路径。(我从 Bill Karwin 关于 SQL 反模式的书中得到了这个想法)。

所以,我开始的数组看起来像这样:

正如您可能已经收集到的,外部数组的索引是没有意义的。我只是在“名称”上按字母顺序对内部数组进行了排序,PHP 在外部数组上分配了数字索引。

就“路径”值而言,每条路径的最后一段是节点的伪 id,即 Animals 是节点 1,Birds 是节点 3。您可以看到完整路径描述了到给定的路径节点,例如,'Cockatoos' 的父级是 'Birds',后者的父级是 'Animals'。

我想保持节点的字母顺序,但按它们的父级分组。换句话说,我想要一个看起来像这样的数组(按其自然顺序):

我计划递归地迭代它以打印树的可视化表示。

在尝试从一种类型的数组转换为另一种类型时,我的方法使用了递归、变量变量和正则表达式,但我一直遇到障碍。

另外,是否有我应该考虑的 SPL 数据结构或迭代器?

非常感谢!

编辑:对不起,应该提到树的深度是可变的。上面的例子有三个层次,但实际上会有更多。

0 投票
1 回答
734 浏览

recursion - sml 中的递归数据类型

有没有办法为整数定义数据类型。即 0,1,2,... 不是零,一,... 单独。

我想定义一组整数。bu 使用 0, n,n+1 和递归。我尝试过这样的事情:数据类型 nat=0|n|n+1 。但是几乎很明显不起作用,因为它不将 0 识别为整数,对吗?

我将不胜感激任何帮助。

0 投票
2 回答
9990 浏览

c - 递归结构

我需要使用typedef才能构建递归结构吗?我尝试使用以下代码但没有成功:

0 投票
2 回答
178 浏览

c# - 以人类可读的方式表示节点链

我试图代表一个必须逐步绘制的地铁地图类型的东西(比如它的增长)。

我的代码一切正常,但不可读。基本上它是一个带有递归节点和子节点的树结构,我的测试代码如下所示:

有没有人对如何解决这个烂摊子有任何建议?

0 投票
1 回答
707 浏览

sql - 电话数据库 SQL 查询

我一直在为电话做一个数据库项目,这是图表的快速视图,callid 在 call 表中自动递增,sessionid 在 session 表中自动递增,这种方式在三向呼叫中调用有同一张图。除了 sessionstarttime 和 sessionend time,我在每个字段中都输入了虚构数据

使用 phpmyadmin,

我的问题:我需要进行一次查询,以便为客户提供计费时间,也就是电话号码。

示例电话

A -> B 从中午 12:00 到下午 1:00

B -> C 从中午 12:30 到下午 1:30

A 应按 1 小时计费

B 应按 1 1/2 小时(1:30 小时)计费

C 应按 1 小时计费

另一个示例 A -> B 12:00PM 到 1:00PM A -> C 12:30PM 到 1:30PM

A 应按 1 1/2 小时(1:30 小时)计费

B 应按 1 小时计费

C 应按 1 小时计费

这是给定的数据格式

这是ER图

http://i.stack.imgur.com/rrh4B.jpg

这是我开始思考的内容,但在试图使一个查询适合调用表中的所有可能输入时让自己陷入混乱

这里还有几个简单的查询供参考

计算每次通话的长度

计算每个会话的长度

按帐户拨打电话的分钟数(注意呼叫者)

按帐户接听电话的分钟数(注意 callreciever)

这是架构的 xml 输出

提前感谢您的帮助,如果您想到此数据库可能的任何其他复杂查询,任何帮助/输入/方向将不胜感激

xml 中的 Fourway 调用数据示例

0 投票
3 回答
1550 浏览

r - 将目录树表示为递归列表

我被某项任务困住了。我想要的是一个函数,给定一个目录路径,它将返回一个递归列表作为输出。

输出的形式应该是 myList$dir$subdir$subdir$fullFilePath

所以基本上我想将目录树表示为某个列表。我获取了所有文件,获取了每个文件的所有子目录,但我不知道如何将它们全部放入具有多个级别的列表中。

0 投票
2 回答
162 浏览

c - 递归数据结构出错 - 从类型 struct *l 分配 List 时类型不兼容

我制作了一个二叉树,其中基本上有三层结构:

在这行代码上

我收到标题中提到的错误

通常使用递归数据结构,这些类型的分配工作,尽管接下来有类型 struct *l。谁能帮我弄清楚为什么在这种情况下它不起作用?

我也会本能地把上面的线作为

但我的编译器似乎更不喜欢这样。

0 投票
3 回答
866 浏览

php - 如何处理大数组?

我正在用 PHP 开发一个应用程序,我需要为此实现一个大文件处理程序。读写文件不是问题,但检查文件内容是个问题。

我构建了一个递归函数来检查一个变量是否已经在同一个文档中使用。

当 in_array($id,$this->id) 返回 FALSE 时,$id 将被添加到 $this->id(包含所有使用的 id 的数组)并返回一个有效的 id。

当返回 TRUE 时,它返回与参数 $id+1 相同的函数

由于我们一次要讨论超过 300000 条记录,PHP 不会不能存储这么大的数组。当这个数组变得太大时,它似乎停止在我生成的文档中写入行。但我没有收到任何这样的错误消息。

由于生成的文档是具有多行 INSERT 的 SQL 文件,因此另一个解决方案可能是检查 id 是否已存在于数据库中。MySQL 可以捕获这些异常并通过将 1 添加到 id 来再次尝试这些条目吗?如何?

你认为我需要如何解决这个问题?

亲切的问候,

沃特

0 投票
4 回答
1760 浏览

haskell - 使用 parsec 解析递归数据

如何实现List Int解析器来解析Cons 0 (Cons 1 (Cons 2 (Cons 5 Nil)))from list

ps:不解析 a[Int]并将其转换为的纯解析器List Int是可取的。

0 投票
2 回答
2209 浏览

types - 什么是相互递归类型?

如果在 ML 中,递归数据类型的示例是:

在 ML 中,什么是相互递归的数据类型以及它的一个例子?