先序遍历
void PreOrderTraverse(BinTree T) //BinTree是指针类型; { if(T) { visit(T); //访问根节点 PreOrderTraverse(T->lchild); PreorderTraverse(T->rchild); } }
中序遍历
void InOrderTraverse(BinTree T) //BinTree是指针类型; { if(T) { PreOrderTraverse(T->lchild); visit(T); //访问根节点 PreorderTraverse(T->rchild); } }
后序遍历
void PostOrderTraverse(BinTree T) //BinTree是指针类型; { if(T) { PreOrderTraverse(T->lchild); PreorderTraverse(T->rchild); visit(T); //访问根节点 } }
中序遍历非递归算法
//利用栈的方法 #include<stack> void InorderTraverse(BinTre T){ BinTree p,q; stack<TelemType>s; p=T; while(p || !s.empty()){ if(p){ s.push(p); p=p->lchild; } else{ q=s.top(); s.pop(); cout<<q->date; p=q->rchild; } }
层次遍历
//利用队列的方法 #include<queue> void LevelTraverse(BinTree T){ BinTree p; queue<TelemType>que; que.push(T); while(!que.empty()) { int size=que.size(); for(int i=0;i<size;i++){ p=que.front(); que.pop(); cout<<p->datd; if(p->lchild){ que.push(p->lchild); } if(p->rchild){ que.push(p->rchild); } } } }