超详解析,手打不易,转载注明出处,点赞收藏,多谢支持
//中序
void InorderTraversal( BinTree BT ){
if(BT != NULL){
InorderTraversal(BT->Left); //递归左孩子
printf(" %c",BT->Data); //访问根节点
InorderTraversal(BT->Right); //递归右孩子
}
}
//前序
void PreorderTraversal( BinTree BT ){
if(BT != NULL){
printf(" %c",BT->Data); //访问根节点
PreorderTraversal(BT->Left); //递归左孩子
PreorderTraversal(BT->Right); //递归右孩子
}
}
//后序
void PostorderTraversal( BinTree BT ){
if(BT != NULL){
PostorderTraversal(BT->Left); //递归左孩子
PostorderTraversal(BT->Right); //递归右孩子
printf(" %c",BT->Data); //访问根节点
}
}
//层序
void LevelorderTraversal( BinTree BT ){
BinTree Seq[100]; //辅助队列
int tail = 0; //队尾
int head = 0; //队头
BinTree p = BT;
if(p!=NULL){
Seq[tail++] = p; //根节点进队
}
while(head != tail){
p = Seq[head++]; //对头元素出队
printf(" %c",p->Data); //访问队头节点
if(p->Left != NULL){ //队头节点是否有左子树、有就入队
Seq[tail++] = p->Left;
}
if(p->Right != NULL){ //队头节点是否有右子树、有就入队
Seq[tail++] = p->Right;
}
}
}