⑴ 按滿二叉樹方式建立 (補充)
在此補充按滿二叉樹的方式對結點進行編號建立鏈式二叉樹。對每個結點,輸入i、ch。i : 結點編號,按從小到大的順序輸入;ch : 結點內容,假設是字元。在建立過程中借助乙個一維陣列s[n] ,編號為i的結點儲存在s[i]中。
#define max_node 50
typedef struct btnode
char data ;
struct btnode *lchild , *rchild ;
}btnode ;
btnode *create_btree(void)
/* 建立鏈式二叉樹,返回指向根結點的指標變數 */
btnode *t , *p , *s[max_node] ;
char ch ;
int i , j ;
while (1)
scanf(「%d」, &i) ;
if (i==0) break ; /* 以編號0作為輸入結束 */
else
ch=getchar() ;
p=(btnode *)malloc(sizeof(btnode)) ;
p–>data=ch ;
p–>lchild=p–>rchild=null ;
s[i]=p ;
if (i==1) t=p ;
else
j=i/2 ; /* j是i的雙親結點編號 */
if (i%2==0) s[j]->lchild=p ;
else s[j]->rchild=p ;
return(t) ;
⑵ 按先序遍歷方式建立
#define nullky 『?』
#define max_node 50
typedef struct btnode
char data ;
struct btnode *lchild , *rchild ;
}btnode ;
btnode *preorder_create_btree(btnode *t)
/* 建立鏈式二叉樹,返回指向根結點的指標變數 */
char ch ;
ch=getchar() ;
if (ch==nullky)
t=null;
return(t) ;
else
t=(btnode *)malloc(sizeof(btnode)) ;
t–>data=ch ;
preorder_create_btree(t->lchild) ;
preorder_create_btree(t->rchild) ;
return(t) ;
二叉樹 二叉鍊錶
include using namespace std typedef char elemtype int n 0 typedef struct binode binode class bitree bitree binode getroot void preorder binode root 前序...
二叉樹(一) 建立二叉鍊錶儲存的二叉樹
二叉樹的儲存分為順序儲存和鏈式儲存 順序儲存 對於滿二叉樹是非常方便的,沒有空間的浪費,又可以很方便的計算出每乙個結點的左 右孩子及其雙親的下標位置,但是一般的二叉樹不能連續的儲存在一維空間中,所以空結點就占用了一定的空間。二叉樹的順序儲存結構 define max 100 typedef stru...
二叉樹(二叉鍊錶實現)
二叉鍊錶結構的二叉樹模型,棧用自己寫的模版,佇列就不了 直接用stl的,不然 太長了 檔案 tree.h include include includeusing namespace std templateclass my stack templateclass node 結點類 node t d...