1.结构体
2.创建二叉树
(若不满,则用’ '来表示)
键盘输入的时候要对应打空格
3.四种遍历方法
void InorderTraversal( BinTree BT )
{
if(BT){
InorderTraversal(BT -> Left);
printf(" %c", BT -> Data);
InorderTraversal(BT -> Right);
}
}
void PreorderTraversal( BinTree BT )
{
if(BT){
printf(" %c", BT -> Data);
PreorderTraversal(BT -> Left);
PreorderTraversal(BT -> Right);
}
}
void PostorderTraversal( BinTree BT )
{
if(BT){
PostorderTraversal(BT -> Left);
PostorderTraversal(BT -> Right);
printf(" %c", BT -> Data);
}
}
void LevelorderTraversal( BinTree BT ) //利用队列来实现
{
BinTree Q[100];
int head = 0, tail = 0;
if(BT){
Q[tail++] = BT;
}
while(head < tail){
if(Q[head] -> Left){ //队列不为空时
Q[tail++] = Q[head] -> Left;
}
if(Q[head] -> Right){
Q[tail++] = Q[head] -> Right;
}
printf(" %c", Q[head++] -> Data); //访问数据 并把head指针向后移
}
}
前中后序运用递归的方法,只是根结点 左右子树的顺序不一样
而注意的是层序遍历 因为层序遍历的访问次序是从上到下,从左到右,先遇到先访问,所以与队列的操作一致
具体步骤如下:
先将根结点入队
(1)从队列中取出一个结点
(2)访问该结点的数据
(3)若该结点的左右子树非空,则将该结点的左右子树,分别入队
(4)重复步骤(1)(2)(3) 直到队列为空