二叉树的后序遍历非递归

使用两个栈,遇到根节点放入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;

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容