目录
先序遍历
中序遍历
后序遍历
层次遍历
先序遍历
//4、先序遍历(递归遍历)
void PreOrder(BiTree T){
if(T != NULL){
Visit(T);
PreOrder(T -> lchild);
PreOrder(T -> rchild);
}
}
中序遍历
/5、中序遍历(递归遍历)
void InOrder(BiTree T){
if(T != NULL){
InOrder(T -> lchild);
Visit(T);
InOrder(T -> rchild);
}
}
后序遍历
//6、后序遍历(递归遍历)
void PostOrder(BiTree T){
if(T != NULL){
PostOrder(T -> lchild);
PostOrder(T -> rchild);
Visit(T);
}
}
层次遍历
//7、层次遍历(当节点出队时如果它的左右不为空要把它的左右入队,上一层全部出队后,下一层会全部在队列里)(非递归遍历)
//注:不考虑队满情况
void LevelOrder(BiTree T){
BiTree Queue[MaxSize];//Queue用来存放树的指针
BiTree p;
int front = -1, rear = -1;
Queue[++rear] = T;
while(front != rear){
p = Queue[++front];
Visit(p);
if(p -> lchild != NULL)
Queue[++rear] = p -> lchild;
if(p -> rchild != NULL)
Queue[++rear] = p -> rchild;
}
}
/5、中序遍历(递归遍历)
void InOrder(BiTree T){
if(T != NULL){
InOrder(T -> lchild);
Visit(T);
InOrder(T -> rchild);
}
}
后序遍历
//6、后序遍历(递归遍历)
void PostOrder(BiTree T){
if(T != NULL){
PostOrder(T -> lchild);
PostOrder(T -> rchild);
Visit(T);
}
}
层次遍历
//7、层次遍历(当节点出队时如果它的左右不为空要把它的左右入队,上一层全部出队后,下一层会全部在队列里)(非递归遍历)
//注:不考虑队满情况
void LevelOrder(BiTree T){
BiTree Queue[MaxSize];//Queue用来存放树的指针
BiTree p;
int front = -1, rear = -1;
Queue[++rear] = T;
while(front != rear){
p = Queue[++front];
Visit(p);
if(p -> lchild != NULL)
Queue[++rear] = p -> lchild;
if(p -> rchild != NULL)
Queue[++rear] = p -> rchild;
}
}
//7、层次遍历(当节点出队时如果它的左右不为空要把它的左右入队,上一层全部出队后,下一层会全部在队列里)(非递归遍历)
//注:不考虑队满情况
void LevelOrder(BiTree T){
BiTree Queue[MaxSize];//Queue用来存放树的指针
BiTree p;
int front = -1, rear = -1;
Queue[++rear] = T;
while(front != rear){
p = Queue[++front];
Visit(p);
if(p -> lchild != NULL)
Queue[++rear] = p -> lchild;
if(p -> rchild != NULL)
Queue[++rear] = p -> rchild;
}
}



