二叉樹是一種非線性的結(jié)構(gòu),但是在計算機中存儲時,卻要按照線性來存儲。二叉樹也是由一個一個結(jié)點構(gòu)成,只不過是,一個結(jié)點中既要存放數(shù)據(jù),又要存放左孩子的指針和右孩子的指針。所以,我們想要實現(xiàn)二叉樹,首先就得有一個二叉樹的結(jié)構(gòu),根據(jù)剛才的分析,那么二叉樹結(jié)構(gòu)中的變量應(yīng)該要有三個。代碼如下:
創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比烏海網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式烏海網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋烏海地區(qū)。費用合理售后完善,十年實體公司更值得信賴。struct BiTNode{ int data; struct BiTNode *lchild; struct BiTNode *rchild; };
有了這么一個二叉樹的結(jié)構(gòu)之后,我們可以開始動態(tài)的創(chuàng)建結(jié)點。比如,我們要創(chuàng)建的這棵樹有5個元素,A、B、C、D、E。那么,創(chuàng)建結(jié)點的代碼如下:
struct BiTNode *A = ( struct BiTNode * ) malloc ( sizeof ( struct BiTNode ) ); struct BiTNode *B = ( struct BiTNode * ) malloc ( sizeof ( struct BiTNode ) ); struct BiTNode *C = ( struct BiTNode * ) malloc ( sizeof ( struct BiTNode ) ); struct BiTNode *D = ( struct BiTNode * ) malloc ( sizeof ( struct BiTNode ) ); struct BiTNode *E = ( struct BiTNode * ) malloc ( sizeof ( struct BiTNode ) );
接下來,就是要對這些結(jié)點進行初始化,并且生成一棵樹。這棵樹,先序遍歷結(jié)果為:
A->B->C->D->E
中序遍歷結(jié)果為:
B->A->D->C->E
有了樹的理論上的形狀之后,我們要開始對這些結(jié)點進行聯(lián)接。代碼如下:
A->data = 'A'; A->lchild = B; A->rchild = C; B->data = 'B'; B->lchild = B->rchild = NULL; C->data = 'C'; C->lchild = D; C->rchild = E; D->data = 'D'; D->lchild = D->rchild = NULL; E->data = 'E'; E->lchild = E->rchild = NULL;
二叉樹創(chuàng)建好之后,就是要開始遍歷二叉樹了。二叉樹的遍歷有三種,前序,中序和后序。二叉樹的遍歷事實上是通過遞歸實現(xiàn)的。那么,先來實現(xiàn),先序遍歷。代碼如下:
void PreOrderTraverse ( struct BiTNode *T ){ if ( T == NULL ) return; if ( T != NULL ) printf ( "%c", T->data ); //先訪問根結(jié)點 if ( T != NULL ) PreOrderTraverse ( T->lchild ); //訪問左子樹 if ( T != NULL ) PreOrderTraverse ( T->rchild ); //訪問右子樹 }
接著是中序遍歷,中序遍歷不過是先訪問左子樹,再訪問根結(jié)點,最后訪問右子樹。代碼如下:
void InOrderTraverse ( struct BiTNode *T ){ if ( T == NULL ) return; if ( T != NULL ) InOrderTraverse ( T->lchild ); if ( T != NULL ) printf ( "%c", T->data ); if ( T != NULL ) InOrderTraverse ( T->rchild ); }
最后一種,就是后序遍歷。后序遍歷就是先訪問左子樹,再訪問右子樹,最后訪問根結(jié)點。代碼如下:
void PostOrderTraverse ( struct BiTNode *T ){ if ( T == NULL ) return; if ( T != NULL ) PostOrderTraverse ( T->lchild ); if ( T != NULL ) PostOrderTraverse ( T->rchild ); if ( T != NULL ) printf ( "%c", T->data ); }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁標(biāo)題:二叉樹的代碼實現(xiàn)-創(chuàng)新互聯(lián)
本文地址:http://jinyejixie.com/article36/coissg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、Google、手機網(wǎng)站建設(shè)、網(wǎng)站制作、電子商務(wù)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)