美文网首页
二叉树的后序遍历非递归

二叉树的后序遍历非递归

作者: 雨宝_f737 | 来源:发表于2019-03-12 11:22 被阅读0次

    使用两个栈,遇到根节点放入s2中,压到最底下,后面弹出来就是最后访问的;

    新来的结点放入s1,先放左后放右,先弹出右压进去,后左。

    void BinaryTree::posOrderUnrecur(BinaryNode* head)

    {

        stack<BinaryNode*> s1;

        stack<BinaryNode*> s2;

        s1.push(head);

        BinaryNode* tmp;

        while(!s1.empty())

        {

            tmp = s1.top();

            s1.pop();

            s2.push(tmp);

            if(tmp->left!=NULL)

            {

                s1.push(tmp->left);

            }

            if(tmp->right!=NULL)

            {

                s1.push(tmp->right);

            }

        }

        while(!s2.empty())

        {

            tmp = s2.top();

            s2.pop();

            cout<<tmp->value<<" ";

        }

        return;

    }

    相关文章

      网友评论

          本文标题:二叉树的后序遍历非递归

          本文链接:https://www.haomeiwen.com/subject/jcdgpqtx.html