二叉樹的創建

#include
#include<stdlib.h>

typedef struct node{                         //定義節點
   int    data;
   struct node *lchild;
   struct node *rchild;
}Btnode;

Btnode *create_Btnode()                  //先序構造二叉樹
{
    Btnode *T;
    int x;
    scanf("%d",&x);
    if(x==0)
          return NULL;
    else
    {
        T=(Btnode *)malloc(sizeof(Btnode));    //申請新節點
        T->data=x;
        T->lchild=create_Btnode();
        T->rchild=create_Btnode();
    }
    return T;
}

void preOrder(Btnode *T)           //先序遍歷遞歸算法
{
   if(T!=NULL)
   {
       printf("%d ",T->data);
       preOrder(T->lchild);
       preOrder(T->rchild);
   }
}

void inOrder(Btnode *T)            //中序遍歷遞歸算法
{
    if(T!=NULL)
   {
       inOrder(T->lchild);
       printf("%d ",T->data);
       inOrder(T->rchild);
   }
}

void postOrder(Btnode *T)           //後序遍歷遞歸算法
{
    if(T!=NULL)
   {
       postOrder(T->lchild);
       postOrder(T->rchild);
       printf("%d ",T->data);
   }
}

int main()
{
Btnode *create_Btnode();         //創建鏈式二叉樹
void preOrder(Btnode *T);       //先序遍歷遞歸算法
void inOrder(Btnode *T);        //中序遍歷遞歸算法
void postOrder(Btnode *T);      //後序遍歷遞歸算法

Btnode *T;
printf("請按先序的方式輸入二叉樹的節點元素:");
T=create_Btnode();

printf("前序輸出:");
preOrder(T);
printf("\n");

printf("中序輸出:");
inOrder(T);
printf("\n");

printf("後序輸出:");
postOrder(T);
printf("\n");

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