二叉樹中序遍歷非遞歸寫法
阿新 • • 發佈:2018-10-11
sqs nor amp style mage 中序遍歷 遞歸 ack stack
中序遍歷比前序要稍微復雜些,我也先用手寫理出思路
代碼寫的和書上的一比。。。感覺麻煩了好多,但畢竟是自己理的思路不容易忘,所以還是貼自己的
void inOrder_stack(BiTree T){ printf("\n非遞歸中序遍歷結果:\n"); 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); } } } } } }
二叉樹中序遍歷非遞歸寫法