如何使用JavaScript根据元素ID遍历树形结构,查找所有父元素ID呢?

15 min read

以下是一个示例代码,用于遍历树形结构并找到所有父元素ID:

def find_parents(tree, element_id):
    if tree["id"] == element_id:
        return [element_id]

    for child in tree.get("children", []):
        result = find_parents(child, element_id)
        if result:
            return [tree["id"]] + result

    return []

这个函数递归地遍历树形结构。在每个节点上,它首先检查当前节点是否是目标元素,如果是则返回该元素的ID。否则,它遍历当前节点的子节点,并对每个子节点递归调用自身。如果有任何一个子节点返回了一个结果,则该节点也返回该结果(即当前节点是该结果的父节点)。最后,如果没有子节点返回结果,则该节点返回一个空列表。

调用该函数时,可以将树形结构和目标元素ID作为参数传递:

tree = {
    "id": "A",
    "children": [
        {
            "id": "B",
            "children": [
                {
                    "id": "C"
                },
                {
                    "id": "D"
                },
            ],
        },
        {
            "id": "E",
            "children": [
                {
                    "id": "F"
                },
                {
                    "id": "G"
                },
            ],
        },
    ],
}

element_id = "D"
parents = find_parents(tree, element_id)

print(parents)  # 输出 ["A", "B"]

在这个示例中,我们传递了一个树形结构 tree 和目标元素ID "D",并且该函数返回了所有父元素ID,即 ["A", "B"]