我被卡住了,因为我不知道如何在非二叉树中获取特定节点的所有子节点。
例如,根节点是A.
A = {B,C}
B = {D,E,F}
E = {G}
我希望得到所有子节点B = {D,E,F,G}
我该怎么办?非常感谢你。
答案 0 :(得分:3)
您可以递归获取子节点。
首先,遍历树以获取初始节点B
。之后,应用此递归伪代码:
void get_children(Node *node, list<Node*>& res) {
for each child in node->children {
res.add(child);
get_children(child, res);
}
}
将B
传递给get_children
,以及一个空的节点列表。该函数将所有子项添加到传递给它的列表中。确保您通过引用传递列表;否则,该功能不会修改您的列表。
答案 1 :(得分:2)
假设您的树是定向的,一个简单的图遍历算法(BFS或DFS)将为您完成工作。
Breadth-First-Search(Graph, startNode):
create empty queue Q
Q.enqueue(startNode)
while Q is not empty:
current = Q.dequeue()
for each node n that is adjacent to current:
print n
Q.enqueue(n)