私のデータ構造は次のようになります。ツリー内の各ノードへのパスを再帰的に構築する方法 - JavaScript?
var tree = [
{
id: 1,
children: []
}, {
id: 2,
children: [
{
id: 3,
children: []
}
]
}
];
1つのブランチ上のノードや子供の数に制限はありません。
私の目標は、すべてのノードへのパスを構築することです。例えば、IDの
:2私はそれは次のように変更されますので、アルゴリズムによって、私のツリーを実行したい1> 2
のパスを持っています:3は1> 2> 3 IDのパスを持っていますこの:
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);
}
}
}
薄い空気に消えますか?パス文字列の値はなぜですか? –
この段階では、文字列である必要はありません。それらは最終的にビューに出力されます。ああ申し訳ありませんが、正しい2は1の子ノードではありません。 – user1261710