二叉樹遍歷

#include  <stdio.h>
#include  <stdlib.h>


typedef char Elem;


typedef struct Node
{
    Elem data;
    struct Node *pLchild;
struct Node *pRchild;
}BTreeNode, *BTree;


BTree CreateBTree(BTree T)//創建二叉樹
{
Elem x;


scanf("%c", &x);


if ('0' == x)
{
T = NULL;
}
else
{
T = (BTree) malloc (sizeof(BTreeNode));
T->data = x;


T->pLchild = CreateBTree(T->pLchild);
T->pRchild = CreateBTree(T->pRchild);
}


return T;
}


void PostTraverseBTree(BTree T)//後序
{
if (NULL != T)
{
PostTraverseBTree(T->pLchild);
PostTraverseBTree(T->pRchild);
printf("%c ", T->data);
}
}


void InTraverseBTree(BTree T)//中序
{
if (NULL != T)
{
InTraverseBTree(T->pLchild);
printf("%c ", T->data);
InTraverseBTree(T->pRchild); 
}
}


void PreTraverseBTree(BTree T)//前序
{
if (NULL != T)
{
printf("%c ", T->data);
PreTraverseBTree(T->pLchild);
PreTraverseBTree(T->pRchild);
}
}


int main(void)
{
BTree T = NULL;


printf("請輸入二叉樹元素:\n");
T = CreateBTree(T);
printf("\n\n");


printf("先序遍歷:\n");
PreTraverseBTree(T);
printf("\n\n");


printf("中序遍歷:\n");
InTraverseBTree(T);
printf("\n\n");


printf("後序遍歷:\n");
PostTraverseBTree(T);
printf("\n\n");
} 




如下面的二叉樹:(無左右孩子輸入0)
         A
           B       C
       D    E   F   G




則輸入:ABCD00E00F00G00回車


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章