c语言打印树形图形,数据结构C语言版树形结构.ppt
數(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)題。
- 上一篇: stm8s跳出中断程序c语言,stm8s
- 下一篇: html中字段是日期控件,jQuery日