真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語(yǔ)言二叉樹(shù)主函數(shù)怎么寫(xiě) c語(yǔ)言二叉樹(shù)怎么建立

C語(yǔ)言:建立二叉樹(shù),在main方法里寫(xiě)代碼調(diào)試?

#includestdlib.h

創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比滄源網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式滄源網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋滄源地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴(lài)。

typedef?struct?node/*二叉鏈表結(jié)構(gòu)聲明*/

{

struct?node?*lchild;

char?data;

struct?node?*rchild;

}bitnode,*bitree;/*bitnode、bitree為該結(jié)構(gòu)體類(lèi)型*/

bitree?CreatTree()/*創(chuàng)建二叉鏈表*/

{

char?a;

bitree?new;

scanf("%c",a);

if(a=='#')

return?NULL;

else

{

new=(bitree)malloc(sizeof(bitnode));

new-data=a;

new-lchild=CreatTree();/*遞歸創(chuàng)建左子樹(shù)*/

new-rchild=CreatTree();/*遞歸創(chuàng)建右子樹(shù)*/

}

return?new;

}

int?btreedepth(bitree?bt)/*自定義函數(shù)btreedepth()求二叉樹(shù)的深度*/

{

int?ldepth,rdepth;

if(bt==NULL)

return?0;

else

{

ldepth=btreedepth(bt-lchild);

rdepth=btreedepth(bt-rchild);

return?(ldepthrdepth?ldepth+1:rdepth+1);

}

}

int?ncount(bitree?bt)/*自定義函數(shù)ncount求結(jié)點(diǎn)的個(gè)數(shù)*/

{

if(bt==NULL)

return?0;

else?return(ncount(bt-lchild)+ncount(bt-rchild)+1);

}

int?lcount(bitree?bt)/*自定義函數(shù)lcount求葉子結(jié)點(diǎn)的個(gè)數(shù)*/

{

if(bt==NULL)

return?0;

else?if(bt-lchild==NULLbt-rchild==NULL)

return?1;

else?return(lcount(bt-lchild)+lcount(bt-rchild));

}

void?print(bitree?bt)/*自定義函數(shù)print用中序遍歷的方式輸出二叉樹(shù)結(jié)點(diǎn)內(nèi)容*/

{

if(bt!=NULL)

{

print(bt-lchild);

printf("%c",bt-data);

print(bt-rchild);

}

}

void?main()

{

bitree?root;

root=CreatTree();/*調(diào)用函數(shù)創(chuàng)建二叉鏈表*/

printf("contents?of?binary?tree:\n");

print(root);/*調(diào)用函數(shù)輸出結(jié)點(diǎn)內(nèi)容*/

printf("\ndepth?of?binary?tree:%d\n",btreedepth(root));/*調(diào)用函數(shù)輸出樹(shù)的深度*/

printf("the?number?of?the?nodes:%d\n",ncount(root));/*調(diào)用函數(shù)輸出樹(shù)中結(jié)點(diǎn)個(gè)數(shù)*/

printf("the?number?of?the?leaf?nodes:%d\n",lcount(root));/*調(diào)用函數(shù)輸出樹(shù)中葉子結(jié)點(diǎn)個(gè)數(shù)*/

}

求教二叉樹(shù)的main函數(shù)怎么寫(xiě)合適:

我的能力也有限,學(xué)數(shù)據(jù)結(jié)構(gòu)過(guò)的時(shí)間有點(diǎn)久了,而且這個(gè)程序我讀的很吃力,沒(méi)用過(guò)這樣子的語(yǔ)言來(lái)寫(xiě)呢,剛剛寫(xiě)了個(gè)主類(lèi)可是運(yùn)行還是有錯(cuò)誤,我又不會(huì)改,不好意思。。。我想要的主類(lèi)大體是這樣寫(xiě)的,你可以參考一下:

void main()

{

BiTree Tr;//這里定義的東西在這個(gè)程序里也不行,本來(lái)是想讓那個(gè)BinTree是個(gè)指針的,可是這個(gè)程序俺也不大會(huì)弄

printf("按前序次序輸入,以#表示為空:\n");

CreateBinTree(Tr,T,i);//這個(gè)括號(hào)里面的內(nèi)容我也不知該怎么寫(xiě),程序大體讀了讀 貌似不大會(huì)

printf("\n前序遍歷結(jié)果為:\n");

PreOrder(Tr);//反正括號(hào)里的內(nèi)容就是你前面寫(xiě)的那個(gè)函數(shù)括號(hào)里相應(yīng)的

printf("\n中序遍歷結(jié)果為:\n");

InOrder(Tr);

printf("\n后序遍歷結(jié)果為:\n");

PostOder(Tr);

printf("\n層序遍歷結(jié)果為:\n");

LevelOrder(Tr);

printf("\n該二叉樹(shù)的深度為:\n%d",countHighOfBiTree(Tr));

printf("\n該二叉樹(shù)的葉子節(jié)點(diǎn)個(gè)數(shù)為:\n");

countNumOfLeaf(Tr);

printf("\n該二叉樹(shù)的所有結(jié)點(diǎn)數(shù)為:\n");

Count(Tr);

printf("\n");

}

這里是實(shí)驗(yàn)課上老師布置給我們的,然后自己寫(xiě)的,語(yǔ)言和你的不大一樣 但思路差不多,你可以看看這個(gè)的,畢竟我還是學(xué)的時(shí)候思路比較清晰啦,嘿嘿,貌似~是按前序序列來(lái)創(chuàng)建的二叉樹(shù),你輸入的前序序列一定要是正確的哦~我的這個(gè)程序還很低級(jí),錯(cuò)誤的它不會(huì)提示,不好意思哈,學(xué)習(xí)不大好,只能幫到這里了

#include "stdio.h"

#include "conio.h"

#include "stdlib.h"

#includemalloc.h

#includestdlib.h

//#includestdio.h

#includestring.h

#define NULL 0

typedef char Elemtype;

typedef struct BinNode

{

Elemtype data;

struct BinNode *lchild,*rchild;//左右孩子指針

}BinTNode,*BinTree;

//按前序構(gòu)造二叉樹(shù)鏈表表示的二叉樹(shù)序列

BinTree CreateBinTree(BinTree T)

{

char ch;

scanf("%c,\n",ch);

if(ch=='#') T=NULL;

else

{

T=(BinNode *)malloc(sizeof(BinNode));

T-data=ch;//生成根結(jié)點(diǎn)

CreateBinTree(T-lchild);//生成左子樹(shù)

CreateBinTree(T-rchild);//生成右子樹(shù)

}//if

return T;

}//CreateBinTree

void Visit(char dataa)

{

printf("%c",dataa);

}

//前序遍歷二叉樹(shù)

void PreOrderTraverse(BinTree T)

{

//前序遍歷二叉樹(shù)T的遞歸算法,Visit是訪(fǎng)問(wèn)數(shù)據(jù)元素的函數(shù)

if(T)//二叉樹(shù)非空

{

Visit(T-data);//訪(fǎng)問(wèn)根結(jié)點(diǎn)

PreOrderTraverse(T-lchild);//前序遍歷左子樹(shù)

PreOrderTraverse(T-rchild);//前序遍歷右子樹(shù)

}//if

}//PreOrderTraverse

//中序遍歷二叉樹(shù)

void InOrderTraverse(BinTree T)

{

//中序遍歷二叉樹(shù)T的遞歸算法,Visit是訪(fǎng)問(wèn)數(shù)據(jù)元素的函數(shù)

if(T)//二叉樹(shù)非空

{

InOrderTraverse(T-lchild);//中序遍歷左子樹(shù)

Visit(T-data);//訪(fǎng)問(wèn)根結(jié)點(diǎn)

InOrderTraverse(T-rchild);//中序遍歷右子樹(shù)

}//if

}//InOrderTraverse

void PostOrderTraverse(BinTree T)

{

//后序遍歷二叉樹(shù)T的遞歸算法,visit是訪(fǎng)問(wèn)數(shù)據(jù)元素的函數(shù)

if(T)//二叉樹(shù)非空

{

PostOrderTraverse(T-lchild);//后序遍歷左子樹(shù)

PostOrderTraverse(T-rchild);//后序遍歷右子樹(shù)

Visit(T-data);//訪(fǎng)問(wèn)根結(jié)點(diǎn)

}//if

}//PostOrderTraverse

//求二叉樹(shù)的深度

int Depth(BinTree T)

{

int DepthLeft,DepthRight,depthval;

if(!T)

return 0;

else

{

DepthLeft=Depth(T-lchild);

DepthRight=Depth(T-rchild);

depthval=1+(DepthLeftDepthRight?DepthLeft:DepthRight);

return depthval;

}//if

}//Depth

void CountLeaf(BinTree T,int count0,int count2)

{

//統(tǒng)計(jì)二叉樹(shù)中的葉子節(jié)點(diǎn)個(gè)數(shù)

if(T)

{

if((!T-lchild)(!T-rchild))

count0++;

CountLeaf(T-lchild,count0,count2);

CountLeaf(T-rchild,count0,count2);

}

count2=count0-1;

}

void Countduone(BinTree T,int count1)

{

//統(tǒng)計(jì)二叉樹(shù)中度為1的結(jié)點(diǎn)個(gè)數(shù)

if(T)

{

if(((!T-lchild)(T-rchild))||((T-lchild)(!T-rchild)))

count1++;

Countduone(T-lchild,count1);

Countduone(T-rchild,count1);

}

}

int ZongNode(int a,int b,int c)

{

return (a+b+c);

}

void main()

{

BinTree Tr;

int count0,count1,count2;

int jie;

count0=0;

count1=0;

count2=0;

printf("按前序次序輸入,以#表示為空:\n");

CreateBinTree(Tr);

printf("\n前序遍歷結(jié)果為:\n");

PreOrderTraverse(Tr);

printf("\n中序遍歷結(jié)果為:\n");

InOrderTraverse(Tr);

printf("\n后序遍歷結(jié)果為:\n");

PostOrderTraverse(Tr);

printf("\n該二叉樹(shù)的深度為:\n%d",Depth(Tr));

printf("\n該二叉樹(shù)的葉子節(jié)點(diǎn)個(gè)數(shù)為:\n");

CountLeaf(Tr,count0,count2);

printf("%d",count0);

printf("\n該二叉樹(shù)的所有結(jié)點(diǎn)數(shù)為:\n");

//CountLeaf(Tr,count0,count2);

Countduone(Tr,count1);

jie=ZongNode(count1,count2,count0);

printf("%d",jie);

printf("\n");

}

二叉樹(shù)前、中、后遍歷后要用括號(hào)表示法輸出;主函數(shù)怎么寫(xiě)啊。

#include iostream

using std::cin;

using std::cout;

using std::endl;

//using namespace std;

typedef struct BiTNode {

char data;

struct BiTNode *Lchild, *Rchild; // 左、右孩子指針

} *BiTree;

void CreateBiTree(BiTree T){

以B為根節(jié)點(diǎn)的左子樹(shù) A根節(jié)點(diǎn) 以C為根節(jié)點(diǎn)的右子樹(shù)

以D為根節(jié)點(diǎn)的左子樹(shù) B根節(jié)點(diǎn) 以E為根節(jié)點(diǎn)的右子樹(shù)

以G為根節(jié)點(diǎn)的左子樹(shù) D根節(jié)點(diǎn) 以H為根節(jié)點(diǎn)的右子樹(shù)

以K為根節(jié)點(diǎn)的左子樹(shù) C根節(jié)點(diǎn) 以F為根節(jié)點(diǎn)的右子樹(shù)

以I為根節(jié)點(diǎn)的左子樹(shù) F根節(jié)點(diǎn) 右子樹(shù)為空

左子樹(shù)為空 I根節(jié)點(diǎn) 以J為根節(jié)點(diǎn)的右子樹(shù)

擴(kuò)展資料:

主函數(shù)的兩個(gè)形參形式中的形參,允許從執(zhí)行環(huán)境中傳遞任意的多字節(jié)字符串(它們通常被稱(chēng)為命令行參數(shù)),各個(gè)指針 argv[1] .. argv[argc-1] 指向每個(gè)這些字符串的第一個(gè)字符。argv[0] 是指向一個(gè)表示用于執(zhí)行該程序自身的名字的空結(jié)尾多字節(jié)字符串(或者當(dāng)執(zhí)行環(huán)境不支持時(shí),為空字符串 "")的開(kāi)頭字符的指針。

這些字符串是可以改動(dòng)的,雖然對(duì)它們的改動(dòng)并不會(huì)被傳回給執(zhí)行環(huán)境:比如可以用 std::strtok 來(lái)使用它們。由 argv 所指向的數(shù)組的大小至少為 argc+1,其最后一個(gè)元素 argv[argc] 保證為一個(gè)空指針。

參考資料來(lái)源:百度百科-main函數(shù)


文章標(biāo)題:c語(yǔ)言二叉樹(shù)主函數(shù)怎么寫(xiě) c語(yǔ)言二叉樹(shù)怎么建立
網(wǎng)址分享:http://weahome.cn/article/hjgcds.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部