我正在用Javascript构建一个图形编辑器,我需要一个算法来识别两个“节点”对象之间所有可能的路由。
给定以下JSON对象:
{
"failureNode": {
"failureNode": {
"failureNode": {
"failureNode": {
"failureNode": null,
"successNode": null,
"id": "node-endpointfailure",}
},
"successNode": {
"failureNode": null,
"successNode": null,
"id": "node-endpointsuccess",
},
"id": "node-1",
},
"successNode": {
"failureNode": null,
"successNode": null,
"id": "node-endpointsuccess",
},
"id": "node-2",
},
"successNode": {
"failureNode": {
"failureNode": {
"failureNode": null,
"successNode": null,
"id": "node-endpointfailure",
},
"successNode": {
"failureNode": null,
"successNode": null,
"id": "node-endpointsuccess",
},
"id": "node-1",
},
"successNode": {
"failureNode": null,
"successNode": null,
"id": "node-endpointsuccess",
},
"id": "node-3",
},
"id": "node-4",
},
"successNode": {
"failureNode": null,
"successNode": null,
"id": "node-endpointsuccess",
},
"id": "node-root",
}
我需要ID为'node root'的节点之间的所有可能路由
对于这个例子,输出将是一个JSON路径数组。像这样的东西...
[
failureNode.failureNode.failureNode.failureNode,
failureNode.successNode.failureNode.failureNode
]
大多数应用程序都使用jQuery,所以纯Javascript或jQuery解决方案都可以工作。
我觉得你选择的表达方式有点奇怪和混乱。树不是表示这一点的最佳方式。您所描述的本质上是一个DAG(有向无环图)。递归表示最终会复制对象。虽然我确信还有其他方法来表示这一点,但一个简单的表示方法就是列出每个节点,其中包含由id标识的成功和失败节点。停止节点的成功和失败节点将具有空值(或零长度字符串,以两者中的任何一个为准)。或者你可以有一本关于所有这些的字典。
例如,您的图形可以(按列表)描述为:
[
{
id: "Start",
successNode: "success",
failureNode: "node-1"
},
{
id: "node-1",
successNode: "node-3",
failureNode: "node-2"
},
{
id: "node-2",
successNode: "success",
failureNode: "node-4"
},
{
id: "node-3",
successNode: "success",
failureNode: "node-4"
},
{
id: "node-4",
successNode: "success",
failureNode: "failure"
},
{
id: "success",
successNode: "",
failureNode: ""
},
{
id: "failure",
successNode: "",
failureNode: ""
}
]
使编辑图表变得非常容易。只需添加或删除节点及其值。我可能会使用另一个对象作为字典,以便更快/更容易地找到每个节点。假设我确实有这样一个字典dicing
,从一个节点导航到另一个节点查看您最终的位置并不难。
这将完成以下任务:
function recurse(from, to, node) {
var result = [],
choices = ["sucessNode", "failureNode"];
if (!from && to == node.id)
return [[]];
if (from == node.id)
return recurse(null, to, node);
for (var i=0; i<choices.length; i++) {
var choice = choices[i];
if (node[choice] != null) {
var res = recurse(from, to, node[choice]);
for (var j=0; j<res.length; j++) {
res[j].unshift(choice);
result.push(res[j]);
}
}
}
return result;
}
recurse('node-root', 'node-endpointfailure', data);
问题内容: 是否有人对未知结构的NSDictionary进行了递归有序遍历?我想学习任何NSDictionary,并按层次结构顺序处理每个级别。 1)此数据来自经过验证的JSON。可以肯定地说,从诸如SBJSON(JSON框架)之类的框架创建的NSDictionary仅会导致嵌套字典,数组和任意叶的组合吗? 2)如何使用适用于数组和字典的快速枚举完成泛型遍历?使用下面的代码,一旦我到达数组中的字典
从前有座山 山里有座庙 庙里有个老和尚和小和尚 老和尚对小和尚说: 从前有座山 返回1 从前有座山,山里有个庙,庙里有个和尚讲故事……这是一个古老的童谣,每个人都知道下面一句说了什么,但还要不厌其烦的说下去。犹如我们的人性,陷入一种循环,不可逃脱,无法自拔。 所以在我们现实生活中,很多时候也有所谓的重复性,而这种重复性用计算机解决的话,就能够省很多事情。 如果用一部电影来类比的话,那《盗梦空间》就
问题内容: 我具有以下JSON结构: 如何使用JavaScript进行迭代? 问题答案: 取自jQuery docs:
本文向大家介绍Java递归遍历树形结构的实现代码,包括了Java递归遍历树形结构的实现代码的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家贴代码,具体代码如下所示: ps:java实现树的递归遍历(用于实现折叠菜单) 1.核心算法 2.实体类(部门) 以上所述是小编给大家介绍的Java递归遍历树形结构的相关内容,希望对大家有所帮助! 更多精彩内容请关注公众号【Java技术迷】,可
问题内容: 我有一个简单的问题…我正在尝试使用切片在Golang中重现此递归数据结构。 现在,我在下面使用带有切片的递归数据结构的“粗糙”源代码,除了我输入的结构是结构而不是结构片之外,其他所有东西都可以正常工作。理想情况下,我希望类型化的递归数据结构是Trie的一部分,其中包含元素Trie {byte,[] Trie}。希望这有意义吗?现在,我有一个Trie struct {byte,[] Tr
如果二进制搜索树中的节点有指向其父节点的指针,是否可以在不需要递归或额外数据结构的情况下进行按顺序遍历?