23 遍历二叉树的非递归算法

Posted cpu-easy

tags:

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

例子:中序遍历非递归算法

技术图片

 

 

实现代码:

技术图片
//中序遍历的非递归算法
int InOrderTraverse_No_DiGui(BiTree T){
    BiTree p;       //顶底指向二叉树中节点的游标
    InitStack(S);       //初始化栈
    p = T;      //p指向所给的二叉树根节点
    while(p || !StackEmpty(S)){
        if(p){      //若当前节点非空
            Push(S, p);     //将当前节点入栈
            p = p->lchild;      //游标指向当前节点的左孩子
        }else{
            Pop(S, q);      //出栈,将栈顶节点返回到一个二叉树节点类型的变量 q 中
            printf("%c", q->data);      //输出该节点的数据域
            p = q->rchild;      //游标指向当前节点的右孩子
        }
    }//while

    return 1;       //遍历结束
}
View Code

 

 

 

以上是关于23 遍历二叉树的非递归算法的主要内容,如果未能解决你的问题,请参考以下文章

《数据结构》遍历二叉树的非递归算法的疑问。

[算法]二叉树的非递归遍历算法

二叉树的非递归遍历

二叉树的非递归遍历

每日一题如何进行二叉树的各种遍历的非递归算法实现?简要讲述。

每日一题如何进行二叉树的各种遍历的非递归算法实现?简要讲述。