二叉樹的二叉鍊錶建立

2021-09-30 09:11:32 字數 1392 閱讀 3182

⑴  按滿二叉樹方式建立 (補充)

在此補充按滿二叉樹的方式對結點進行編號建立鏈式二叉樹。對每個結點,輸入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...