转自:这里
递归方法
void travel(Node *pNode)
{
if (pNode == Null)
{
return;
}
Deal(pNode);
for (int i=0 ;i<pNode->child_list.size(); i++)
{
Node *tmp = pNode->child_list[i];
travel(tmp);
}
}
非递归方法
void travel(Node *pNode)
{
stack stack;
stack.push(pNode);
Node *lpNode;
while(!stack.empty())
{
lpNode = stack.top();
stack.pop();
Deal(lpNode);
for (int i=0 ;i<pNode->child_list.size(); i++)
{
stack.push(pNode->child_lis[i]);
}
}
}
有趣的是,递归遍历里出现了
循环里有递归
的现象,而这在集合求子集,字符串求字符串的算法里也经常出现。