void visit(tag& t) { switch (t.tagType) { case 0: visit0(t); break; case 1: visit1(t); break; default:; } }
// 中序遍历二叉树,非递归 void InOrderTraverse(BiTree T) { BiTree p; p = T->lchild; while(p != T) { while(p->ltag == Link) { p = p->lchild; } // 每次找到最先输出的字符 visit0(p->data); while(p->rtag == Thread && p->rchild != T) { p = p->rchild; // 每次从叶子结点去找到下一个需要输出的位置 visit0(p->data); } p = p->rchild; } printf("\n"); }