您的位置:首页 > 其它

多叉树的递归和非递归遍历

2016-04-13 21:01 302 查看
转自:这里

递归方法

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]);
}
}
}


有趣的是,递归遍历里出现了

循环里有递归

的现象,而这在集合求子集,字符串求字符串的算法里也经常出现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: