1、中序遍历
-
递归算法
void InOrderTraverse(BiTree T){ if(T){ //遍历左子树 InOrderTraverse(T->LChild); cout<<T->data; //遍历右子树 InOrderTraverse(T->RChild); } }
-
非递归算法
void InOrderTraverse(BiTree T){ //先创建一个栈,用于存放每个子树的根节点 InitStack(S); p=T; q=new BiTNode; while(p || StackEmpty(S)){ if(p){ //将p压入栈中 Push(S,p); p=p->next; } else{ //开始从栈顶弹出元素,即子树的根节点 Pop(S,q); cout<<q->data; //左子树遍历完了,开始遍历右子树 p=q->RChild; } } }