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

烈酒焚心 提交于 2019-12-04 09:33:57

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

 

 

实现代码:

//中序遍历的非递归算法
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

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!