如何在C++中获取非二叉树中特定节点的所有子节点

lol*_*shi 3 c++ algorithm

我被卡住了,因为我不知道如何获取非二叉树中特定节点的所有子节点。

例如,根节点是 A。

A = {B, C}

B = {D, E, F}

E = {G}

我想得到 B = {D, E, F, G} 的所有子节点

我能怎么做?非常感谢。

das*_*ght 5

您可以递归获取子节点。

首先,遍历树以获得初始节点B。之后,应用这个递归伪代码:

void get_children(Node *node, list<Node*>& res) {
    for each child in node->children {
        res.add(child);
        get_children(child, res);
    }
}
Run Code Online (Sandbox Code Playgroud)

传递Bget_children,以及一个空的节点列表。该函数会将所有子项添加到传递给它的列表中。确保通过引用传递您的列表;否则,该函数不会修改您的列表。