我想知道如何用其子节点替换非二叉树的节点。例如,我将从这样的结构开始:
a
/ / \ \
b c d e
/\ / /\\
f g h i jk
如果我将节点e
的目标替换为其子节点,则结束此操作
a
/ / \ \ \ \
b c d i j k
/\ /
f g h
在JSON中,初始结构如下:
{
"id": "a",
"children": [
{
"id": "b",
"children": [
{
"id": "f",
"children": []
},
{
"id": "g",
"children": []
}
]
},
{
"id": "c",
"children": [
{
"id": "h",
"children": []
}
]
},
{
"id": "d",
"children": []
},
{
"id": "e",
"children": [
{
"id": "i",
"children": []
},
{
"id": "j",
"children": []
},
{
"id": "k",
"children": []
}
]
}
]
}
答案 0 :(得分:0)
如果稍微更改JSON结构,您的问题将变得更加容易。 对于每个节点,请存储每个节点的父级及其直接子级。
[
{"id": "a", "parent": null, "children" : ["b", "c", "d", "e"] },
{"id": "b", "parent": "a", "children" : ["f", "g"]},
{"id": "c", "parent": "a", "children" : ["h"]},
{"id": "d", "parent": "a", "children" : []},
{"id": "e", "parent": "a", "children" : ["i", "j", "k"]}
]
可以说您的目标节点是e
。
现在您需要做的就是将e
的直系子代的父母更改为a
,因为a
是e
的父母。然后删除e
。
这将保留e
的子级的子树结构。如果您不希望这样做,则必须将a
的父级递归地分配给e
的所有子级,而不仅仅是直接的子级。