廣義表的二叉樹的形式

2021-06-06 01:57:57 字數 2594 閱讀 4168

輸入二叉樹的廣義表形式,將其轉變為二叉樹形式,至於怎樣輸入廣義表需要程式規定。

定義包含標頭檔案檔案t11.h中

#include"stdio.h"

#include"string.h"

#include"ctype.h"

#include"malloc.h"

#include"stdlib.h"  //atoi(),exit();

#include"io.h"      //eof()

#include"math.h"

#define  true  1

#define  false  0

#define  ok   1

#define  error 0

typedef int status;

typedef int boolean;

定義資料結構標頭檔案gercs.h中

#define init_stack 100

#define init_stack_add  20

typedef struct node            //  二叉樹的資料結構定義

*bitree,pbitree;

typedef struct

sqstack;

struct binode

;struct sqstack1

;typedef struct

*linkqueue,queue;

sqstack w;

定義包含實現函式功能模組gercs.cpp中

void inittree(bitree &t)

void initqueue(queue &q)

void initstack(sqstack &l)

l.top=l.bottom;

l.stacksize=init_stack;

}void initstack1(sqstack1 &l)

l.top=l.bottom;

l.stacksize=init_stack;

}void enqueue(queue &q,bitree t)

(q.rear++)->lp=t;

}void push(sqstack &l,char ch)

*(l.top++)=ch;

}void push1(sqstack1 &l,bitree ch)

(l.top++)->lp=ch;

}status pop(sqstack &l,char &e)

}status pop1(sqstack1 &l,bitree &e)

}status emptystack(sqstack l)

status emptystack1(sqstack1 l)

sqstack shuru(sqstack &s)

ch=ch1;

}else

}while(!emptystack(s))

return r;

}void createtree(bitree &t)           // 先序建立二叉樹

t->data=ch;

createtree(t->lchild);

createtree(t->rchild); 

}// getchar();

}                               // 建立二叉樹結束

void xianxu(bitree t,sqstack1 &s)   //  先序非遞迴遍歷,採用的是儲存右孩子的位址通過棧實現

else

exit(0);

while(t || !emptystack1(s))     //  迴圈終止條件

else

pop1(s,t);  }}

void cengci(bitree t,queue &q)

binode *p,*s;

s=p=q.front;

enqueue(q,t);

while(p != q.rear)

printf("層次遍歷為:\n");

while(s < q.rear)

}最後就是定義主函式函式呼叫了,包含於標頭檔案main_gercs.cpp中

#include"t11.h"

#include"gercs.h"

#include"gercs.cpp"

void main()

*/createtree(s);

xianxu(s,q);

printf("\n");

cengci(s,u);

printf("\n");

}最後上傳一張程式

程式的注釋由於自己剛編寫的,沒有及時加上,等自己有時間加上詳細注釋,現在做了這麼多得實驗,發現學了資料結構,不僅自己對語言的熟練程度變得更深了,而且程式設計思想和以前完全不一樣了,程式的設計很快就可以完成。遇到的困難也會解決,相信只要自己不斷深入學習對這方面的理解就會變得更深刻。自己也是乙個意志堅強的男孩,只要有困難一定會有解決的辦法。留住最真的於2012.04.25.18:46寫。~~~~~~~~~~~~~~~~~~~~~~~~~~~

根據廣義表構建二叉樹

如果用陣列形式建樹進行的話很簡單,表面上就不需要用到棧的知識,也比較容易想到,用結構體建樹的方法就要不斷push,pop啊然後感覺一下想不出什麼時候push,pop,或者push pop 什麼,給個樣例 陣列建樹是這樣的開始說明a i 的左兒子a 2 i 1 右兒子a 2 i 2 a b d c 用...

二叉樹 48 二叉樹 二叉樹的高度

目的 使用c 模板設計並逐步完善二叉樹的抽象資料型別 adt 內容 1 請參照鍊錶的adt模板,設計二叉樹並逐步完善的抽象資料型別。由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在乙個原始檔內。在實際的設計中,推薦將抽象類及對應的派生類分別放在單獨的標頭檔案中。參考教材 課件,以及網盤中的鍊錶...

二叉樹(一) 建立二叉鍊錶儲存的二叉樹

二叉樹的儲存分為順序儲存和鏈式儲存 順序儲存 對於滿二叉樹是非常方便的,沒有空間的浪費,又可以很方便的計算出每乙個結點的左 右孩子及其雙親的下標位置,但是一般的二叉樹不能連續的儲存在一維空間中,所以空結點就占用了一定的空間。二叉樹的順序儲存結構 define max 100 typedef stru...