【发布时间】:2018-04-04 04:55:24
【问题描述】:
我的数据结构将如下所示:
var tree = [
{
id: 1,
children: []
}, {
id: 2,
children: [
{
id: 3,
children: []
}
]
}
];
一个分支上可以有任意数量的节点或子节点。
我的目标是为每个节点建立一条路径。
例如 id: 3 的路径为 1 > 2 > 3 id: 2 的路径为 1 > 2
我想通过算法运行我的树,所以它会被这样修改:
var tree = [
{
id: 1,
path: [1],
children: []
}, {
id: 2,
path: [2],
children: [
{
id: 3,
path: [2, 3],
children: []
}
]
}
];
我编写了一个算法,它将访问树中的所有节点: https://plnkr.co/edit/CF1VNofzpafhd1MOMVfj
如何构建每个节点的路径?
这是我的尝试:
function traverse(branch, parent) {
for (var i = 0; i < branch.length; i++) {
branch[i].visited = true;
if (branch[i].path === undefined) {
branch[i].path = [];
}
if (parent != null) {
branch[i].path.push(parent);
}
if (branch[i].children.length > 0) {
traverse(branch[i].children, branch[i].id);
}
}
}
【问题讨论】:
-
为什么在开始时 id = 2 的路径为
'1'?为什么路径字符串的值是? -
在这个阶段它们没有必要成为字符串。它们最终将被输出到视图中。哦,对不起,你是正确的 2 不是 1 的子节点。
标签: javascript recursion path tree