二叉树的层序遍历【C语言】
昨天说了二叉树的前序,中序,后序遍历
今天来看看比较复杂的层序遍历
基本思想类似BFS
也要结合Queue的知识
#include<stdio.h>
#include<stdlib.h>
typedef struct TreeNode * BinTree;
typedef BinTree Position;
typedef int ElementType;
struct TreeNode{
ElementType d;
BinTree Left;
BinTree Right;
};
void LevelOrderTravelsal(BinTree BT){
Queue Q;
BinTree t;
if(!BT) return ;
Q = CreateQueue(MaxSize);
AddQ(Q,BT);
while(!IsEmpty(Q)){
t = DeleteQ(Q);
printf("%d",t->d);
if(t->Left) AddQ(Q,t->Left);
if(t->Right) AddQ(Q,t->Right);
}
}
到这里二叉树的四种遍历方法就都写完啦~