码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-05-04 13:44:36      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:lan   lang   code   false   逆序   lse   迭代   中序遍历   序列   

前序遍历思路

栈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;
    }
}

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

标签:lan   lang   code   false   逆序   lse   迭代   中序遍历   序列   

原文地址:https://www.cnblogs.com/treasury/p/12826020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!