二叉树的三种迭代遍历方式

Posted treasury

tags:

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

前序遍历思路

栈S;
p= root;
while(p || S不空){
    while(p){
        访问p节点;
        p的右子树入S;
        p = p的左子树;
    }
    p = S栈顶弹出;
}

中序遍历思路

栈S;
p= root;
while(p || S不空){
    while(p){
        p入S;
        p = p的左子树;
    }
    p = S.top 出栈;
    访问p;
    p = p的右子树;
}

后序遍历思路

法1:

栈S;
p= root;
while(p || S不空){
    while(p){
        访问p节点;
        p的左子树入S;
        p = p的右子树;
    }
    p = S栈顶弹出;
}
结果序列逆序;

法2:

栈S;
p= root;
T<节点,True/False> : 节点标记;
while(p || S不空){
    while(p){
        p入S;
        p = p的左子树;
    }
    while(S不空 且 T[S.top] = True){
        访问S.top;
        S.top出S;
    }
    if(S不空){
        p = S.top 的右子树;
        T[S.top] = True;
    }
}

以上是关于二叉树的三种迭代遍历方式的主要内容,如果未能解决你的问题,请参考以下文章

二叉树的三种遍历方式

基于Java的二叉树的三种遍历方式的递归与非递归实现

二叉树的三种遍历对比及用图片展现

二叉树的三种非递归遍历方式

二叉树的三种遍历方式

Python二叉树的三种深度优先遍历