//二叉樹的順序存儲結構
#define MAX_TREE_SIZE 100 typedef int TElemType; TElemType Nil=0;//設整型以0為空 typedef TElemType SqBiTree[MAX_TREE_SIZE];//0號單元存儲根結點
未完,寫作整理中。。。
2018-11-14 22:19:09
二叉樹的性質:
1,在二叉樹的第i層上至多有2i-1個結點(i>=1)。
ps:歸納法易證。
2,深度為k的二叉樹至多有2k-1個結點(k>=1)。
3,n0=n2+1
4,具有n個結點的完全二叉樹的深度為[log2n](down)+1
二叉樹的基本操作:
/*初始化樹*/
1 int InitBiTree(SqBiTree T) 2 { 3 int i; 4 for(i=0;i<MAX_TREE_SIZE;i++) 5 { 6 T[i]=Nil; 7 } 8 T[MAX_TREE_SIZE]='\0'; //給數組尾部加上結束標志 9 return OK; 10 }
/*創建樹*/
1 int CreateBiTree(SqBiTree T) 2 { 3 int i=0; 4 int l=0; 5 char s[MAX_TREE_SIZE]; 6 printf("請按順序輸入結點的值,空格表示空結點,結點數<=%d\n",MAX_TREE_SIZE); 7 gets(s); 8 l=strlen(s);//strlen("hello")返回的結果是5,是不包含字符串結尾處的‘\0’, 9 //但是strcpy(str1,str2),會拷貝str2中的‘\0’。 10 for(;i<l;i++) 11 { 12 T[i]=s[i]; 13 if(i!=0&&T[(i+1)/2-1]==Nil&&T[i]!=Nil) 14 { 15 printf("出現無雙親且不是根的結點.\n"); 16 return ERROR; 17 } 18 } 19 /*for(;i<MAX_TREE_SIZE;i++) 20 { 21 T[i]=Nil; 22 }*/ 23 return OK; 24 }
/*計算樹的深度*/
/*判斷樹是否為空*/
BT數組中的下標與二叉樹節點按層次遍歷編號 如圖:
根節點與左右子樹的編號規律:

參考資料:https://www.cnblogs.com/zlspace/p/6831293.html
