二叉树中序遍历非递归写法
Posted otaganyuki
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树中序遍历非递归写法相关的知识,希望对你有一定的参考价值。
中序遍历比前序要稍微复杂些,我也先用手写理出思路
代码写的和书上的一比。。。感觉麻烦了好多,但毕竟是自己理的思路不容易忘,所以还是贴自己的
void inOrder_stack(BiTree T){ printf(" 非递归中序遍历结果: "); initStack(&sqStack); BiTree p=T,l;//l用于保存上次的输出 push(&sqStack,p); while(!stackEmpty(sqStack)){ getTop(&sqStack,&p); if(p->lchild!=NULL&&p->lchild!=l){ push(&sqStack,p->lchild); } else { pop(&sqStack,&l); printf("%d ",l->data); if(l->rchild!=NULL){ push(&sqStack,l->rchild); } else if(l->rchild==NULL){ if(!stackEmpty(sqStack)){ pop(&sqStack,&l); printf("%d ",l->data); if(l->rchild!=NULL){ push(&sqStack,l->rchild); } } } } } }
以上是关于二叉树中序遍历非递归写法的主要内容,如果未能解决你的问题,请参考以下文章