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

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

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



