二叉树本身就是用递归定义的,因此采用递归方法实现dfs的三种遍历不仅容易理解而且代码简洁。
若用非递归实现,则要采用栈去模拟:保存计算的上下文,使得计算在返回上一级时有路可循。注意每一个结点都要当作根结点来看待。
//前序遍历
//递归实现:根左右
void preOrder1(BinTree *root)
{
if (root != NULL)
{
cout<<root->data<<endl;
preOrder1(root->lchi

这篇博客介绍了如何使用深度优先搜索(DFS)遍历二叉树,包括前序、中序和后序遍历。递归实现简单明了,非递归实现则需要借助栈来模拟。对于非递归的前序遍历,通过一路向左,遇到结点立即访问并入栈,最后转向右进行。中序遍历在根结点入栈时不访问,直到弹栈时访问。后序遍历则在结点第二次退栈时访问。每种遍历方法都详细阐述了递归和非递归的实现过程。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



