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; //遍历结束 }
以上是关于23 遍历二叉树的非递归算法的主要内容,如果未能解决你的问题,请参考以下文章