二叉树:先序遍历

Posted smallredness

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树:先序遍历相关的知识,希望对你有一定的参考价值。

void PreOrderWithoutRecursion1(BTNode* root)
{
    if (root == NULL)
        return;
    BTNode* p = root;
    stack<BTNode*> s;
    while(p||!s.empty())
    {
        //边遍历边打印,并存入栈中,以后需要借助这些根节点(不要怀疑这种说法哦)进入右子树
        while (p)
        {
            cout << setw(4) << p->data;
            s.push(p);
            p = p->lchild;
        }
        //当p为空时,说明根和左子树都遍历完了,该进入右子树了
        if (!s.empty())
        {
            p = s.top();
            s.pop();
            p = p->rchild;
        }
    }
    cout << endl;
}

以上是关于二叉树:先序遍历的主要内容,如果未能解决你的问题,请参考以下文章

建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果

根据二叉树的先序遍历结果输出中序遍历

建立二叉树,层序、先序遍历

二叉树遍历的三种方法:先序遍历,中序遍历,后序遍历

二叉树的遍历方法之层序-先序-中序-后序遍历的简单讲解和代码示例

用递归算法先序中序后序遍历二叉树