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