/*层序遍历链表实现队列结构*/
struct LNode{
BinTree ch;
struct LNode* Next;
};
typedef struct LNode* L;
/*中序遍历*/
void InorderTraversal( BinTree BT ){
if(!BT) return;
InorderTraversal(BT->Left);
printf(" %c",BT->Data);
InorderTraversal(BT->Right);
}
/*先序遍历*/
void PreorderTraversal( BinTree BT ){
if(!BT) return;
printf(" %c",BT->Data);
PreorderTraversal(BT->Left);
PreorderTraversal(BT->Right);
}
/*后序遍历*/
void PostorderTraversal( BinTree BT ){
if(!BT) return;
PostorderTraversal(BT->Left);
PostorderTraversal(BT->Right);
printf(" %c",BT->Data);
}
/*层序遍历*/
void LevelorderTraversal( BinTree BT ){
if(!BT) return;
L f,r,t,p;
f = (L) malloc(sizeof(struct LNode));
r = f;
f->ch = BT;
r->Next = NULL;
while(f){
printf(" %c",f->ch->Data);
p = f;
if(p->ch->Left){
t = (L) malloc(sizeof(struct LNode));
t->Next = NULL;
t->ch = p->ch->Left;
r->Next = t;
r = t;
}
if(p->ch->Right){
t = (L) malloc(sizeof(struct LNode));
t->Next = NULL;
t->ch = p->ch->Right;
r->Next = t;
r = r->Next;
}
f = f->Next;
free(p);
}
}
二叉树的遍历
最新推荐文章于 2024-09-25 23:59:39 发布