日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

c语言打印树形图形,数据结构C语言版树形结构.ppt

發(fā)布時(shí)間:2023/12/31 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言打印树形图形,数据结构C语言版树形结构.ppt 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)據(jù)結(jié)構(gòu)C語(yǔ)言版樹(shù)形結(jié)構(gòu)

St中元素 算法執(zhí)行的操作 ch AC k=2 , AC 建立E結(jié)點(diǎn),因k=1,將其作為C結(jié)點(diǎn)的左孩子結(jié)點(diǎn) E AC C結(jié)點(diǎn)進(jìn)棧,k=1 ( A 建立C結(jié)點(diǎn),因k=2,將其作為A結(jié)點(diǎn)的右孩子結(jié)點(diǎn) C A k=2 , A 退棧一次 ) AB 退棧一次 ) ABD 建立E結(jié)點(diǎn),因k=2,將其作為D結(jié)點(diǎn)的右孩子結(jié)點(diǎn) G ABD k=2 , ABD D結(jié)點(diǎn)進(jìn)棧,k=1 ( St中元素 算法執(zhí)行的操作 ch ? 算法結(jié)束 ch掃描完畢 空 退棧一次 ) A 退棧一次 ) AC 建立F結(jié)點(diǎn),因k=2,將其作為C結(jié)點(diǎn)的右孩子結(jié)點(diǎn) F 生成的二叉樹(shù)=> (2)查找結(jié)點(diǎn)FindNode(*b,x) 采用先序遍歷遞歸算法查找值為x的結(jié)點(diǎn)。找到后返回其指針,否則返回NULL。算法如下: BTNode *FindNode(BTNode *b,ElemType x) { BTNode *p; if (b==NULL) return NULL; else if (b->data==x) return b; else { p=FindNode(b->lchild,x); if (p!=NULL) return p; else return FindNode(b->rchild,x); } } (3)找孩子結(jié)點(diǎn)LchildNode(p)和RchildNode(p) 直接返回*p結(jié)點(diǎn)的左孩子結(jié)點(diǎn)或右孩子結(jié)點(diǎn)的指針。算法如下: BTNode *LchildNode(BTNode *p) { return p->lchild; } BTNode *RchildNode(BTNode *p) { return p->rchild; } (4)求高度BTNodeDepth(*b) 求二叉樹(shù)的高度的遞歸模型f()如下: f(NULL)=0 f(b)=MAX{f(b->lchild),f(b->rchild)}+1 其他情況 對(duì)應(yīng)的算法如下: int BTNodeDepth(BTNode *b) { int lchilddep,rchilddep; if (b==NULL) return(0); /*空樹(shù)的高度為0*/ else { lchilddep=BTNodeDepth(b->lchild); /*求左子樹(shù)的高度為lchilddep*/ rchilddep=BTNodeDepth(b->rchild); /*求右子樹(shù)的高度為rchilddep*/ return(lchilddep>rchilddep)? (lchilddep+1):(rchilddep+1); } } (5)輸出二叉樹(shù)DispBTNode(*b) 其過(guò)程是:對(duì)于非空二叉樹(shù)b,先輸出其元素值,當(dāng)存在左孩子結(jié)點(diǎn)或右孩子結(jié)點(diǎn)時(shí),輸出一個(gè)“(”符號(hào),然后遞歸處理左子樹(shù),輸出一個(gè)“,”符號(hào),遞歸處理右子樹(shù),最后輸出一個(gè)“)”符號(hào)。對(duì)應(yīng)的遞歸算法如下: void DispBTNode(BTNode *b) {if (b!=NULL) { printf("%c",b->data); if (b->lchild!=NULL || b->rchild!=NULL) { printf("("); DispBTNode(b->lchild); /*遞歸處理左子樹(shù)*/ if (b->rchild!=NULL) printf(","); DispBTNode(b->rchild); /*遞歸處理右子樹(shù)*/ printf(")"); } } } 例7.3 假設(shè)二叉樹(shù)采用二叉鏈存儲(chǔ)結(jié)構(gòu),設(shè)計(jì)一個(gè)算法判斷兩棵二叉樹(shù)是否相似,所謂二叉樹(shù)t1和t2是相似的指的是t1和t2都是空的二叉樹(shù);或者t1和t2的根結(jié)點(diǎn)是相似的,以及t1的左子樹(shù)和t2的左子樹(shù)是相似的且t1的右子樹(shù)與t2的右子樹(shù)是相似的。 解:判斷兩棵二叉樹(shù)是否相似的遞歸模型f()如下: f(t1,t2)=true 若t1=t2=NULL f(t1,t2)=false 若t1、t2之一為NULL,另一不為NULL f(t1,t2

總結(jié)

以上是生活随笔為你收集整理的c语言打印树形图形,数据结构C语言版树形结构.ppt的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。