資料結構–二叉樹–層次遍曆二叉樹(順序遍曆)

來源:互聯網
上載者:User
#include<stdio.h> /* EOF(=^Z或F6),NULL */#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status; /* Status是函數的類型,其值是函數結果狀態碼,如OK等 */#if CHAR  typedef char TElemType;  TElemType Nil=' '; /* 設字元型以空格符為空白 */#else  typedef int TElemType;  TElemType Nil=0; /* 設整型以0為空白 */#endif#define MAX_TREE_SIZE 100 /* 二叉樹的最大結點數 */typedef TElemType SqBiTree[MAX_TREE_SIZE]; /* 0號單中繼存放區根結點 */Status InitBiTree(SqBiTree T){ /* 構造空二叉樹T。因為T是固定數組,不會改變,故不需要& */  int i;  for(i=0;i<MAX_TREE_SIZE;i++)    T[i]=Nil; /* 初值為空白 */  return OK;}Status CreateBiTree(SqBiTree T){ /* 按層序次序輸入二叉樹中結點的值(字元型或整型), 構造順序儲存的二叉樹T */  int i=0;#if CHAR  int l;  char s[MAX_TREE_SIZE];  printf("請按層序輸入結點的值(字元),空格表示空結點,結點數≤%d:\n",MAX_TREE_SIZE);  gets(s); /* 輸入字串 */  l=strlen(s); /* 求字串的長度 */  for(;i<l;i++) /* 將字串賦值給T */  {    T[i]=s[i];    if(i!=0&&T[(i+1)/2-1]==Nil&&T[i]!=Nil) /* 此結點(不空)無雙親且不是根 */    {      printf("出現無雙親的非根結點%c\n",T[i]);      exit(ERROR);    }  }  for(i=l;i<MAX_TREE_SIZE;i++) /* 將空賦值給T的後面的結點 */    T[i]=Nil;#else  printf("請按層序輸入結點的值(整型),0表示空結點,輸999結束。結點數≤%d:\n",MAX_TREE_SIZE);  while(1)  {    scanf("%d",&T[i]);    if(T[i]==999)      break;    if(i!=0&&T[(i+1)/2-1]==Nil&&T[i]!=Nil) /* 此結點(不空)無雙親且不是根 */    {      printf("出現無雙親的非根結點%d\n",T[i]);      exit(ERROR);    }    i++;  }  while(i<MAX_TREE_SIZE)  {    T[i]=Nil; /* 將空賦值給T的後面的結點 */    i++;  }#endif  return OK;}void LevelOrderTraverse(SqBiTree T,Status(*Visit)(TElemType)){ /* 層序遍曆二叉樹 */  int i=MAX_TREE_SIZE-1,j;  while(T[i]==Nil)    i--; /* 找到最後一個非空結點的序號 */  for(j=0;j<=i;j++)  /* 從根結點起,按層序遍曆二叉樹 */    if(T[j]!=Nil)      Visit(T[j]); /* 只遍曆非空的結點 */  printf("\n");} Status visit(TElemType e){  printf("%d ",e);  return OK;}void main(){  SqBiTree T;  InitBiTree(T);  CreateBiTree(T);  printf("層序遍曆二叉樹:\n");  LevelOrderTraverse(T,visit);}

建立二叉樹時按層次順序輸入,找到最後一個非空點,按層次順序輸出。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.