#include<stdio.h> #define TREEMAX 100 typedef struct BT { char data; BT *lchild; BT *rchild; }BT; BT *CreateTree(); void Preorder(BT *T); void Postorder(BT *T); void Inorder(BT *T); void Leafnum(BT *T); void Nodenum(BT *T); int TreeDepth(BT *T); int count=0; void main() { BT *T=NULL; char ch1,ch2,a; ch1='y'; while(ch1=='y'||ch1=='y') { printf("\n"); printf("\n\t\t 二叉樹子系統(tǒng)"); printf("\n\t\t*****************************************"); printf("\n\t\t 1---------建二叉樹 "); printf("\n\t\t 2---------先序遍歷 "); printf("\n\t\t 3---------中序遍歷 "); printf("\n\t\t 4---------后序遍歷 "); printf("\n\t\t 5---------求葉子數(shù) "); printf("\n\t\t 6---------求結(jié)點(diǎn)數(shù) "); printf("\n\t\t 7---------求樹深度 "); printf("\n\t\t 0---------返 回 "); printf("\n\t\t*****************************************"); printf("\n\t\t 請選擇菜單號 (0--7)"); scanf("%c",&ch2); getchar(); printf("\n"); switch(ch2) { case'1': printf("\n\t\t請按先序序列輸入二叉樹的結(jié)點(diǎn):\n"); printf("\n\t\t說明:輸入結(jié)點(diǎn)(‘0’代表后繼結(jié)點(diǎn)為空)后按回車。\n"); printf("\n\t\t請輸入根結(jié)點(diǎn):"); T=CreateTree(); printf("\n\t\t二叉樹成功建立!\n");break; case'2': printf("\n\t\t該二叉樹的先序遍歷序列為:"); Preorder(T);break; case'3': printf("\n\t\t該二叉樹的中序遍歷序列為:"); Inorder(T);break; case'4': printf("\n\t\t該二叉樹的后序遍歷序列為:"); Postorder(T);break; case'5': count=0;Leafnum(T); printf("\n\t\t該二叉樹有%d個(gè)葉子。\n",count);break; case'6': count=0;Nodenum(T); printf("\n\t\t該二叉樹總共有%d個(gè)結(jié)點(diǎn)。\n",count);break; case'7': printf("\n\t\t該樹的深度為:%d",TreeDepth(T)); break; case'0': ch1='n';break; default: printf("\n\t\t***請注意:輸入有誤!***"); } if(ch2!='0') { printf("\n\n\t\t按【Enter】鍵繼續(xù),按任意鍵返回主菜單!\n"); a=getchar(); if(a!='\xA') { getchar(); ch1='n'; } } } } BT *CreateTree() { BT *t; char x; scanf("%c",&x); getchar(); if(x=='0') t=NULL; else { t=new BT; t->data=x; printf("\n\t\t請輸入%c結(jié)點(diǎn)的左子結(jié)點(diǎn):",t->data); t->lchild=CreateTree(); printf("\n\t\t請輸入%c結(jié)點(diǎn)的右子結(jié)點(diǎn):",t->data); t->rchild=CreateTree(); } return t; } void Preorder(BT *T) { if(T) { printf("%3c",T->data); Preorder(T->lchild); Preorder(T->rchild); } } void Inorder(BT *T) { if(T) { Inorder(T->lchild); printf("%3c",T->data); Inorder(T->rchild); } } void Postorder(BT *T) { if(T) { Postorder(T->lchild); Postorder(T->rchild); printf("%3c",T->data); } } void Leafnum(BT *T) { if(T) { if(T->lchild==NULL&&T->rchild==NULL) count++; Leafnum(T->lchild); Leafnum(T->rchild); } } void Nodenum(BT *T) { if(T) { count++; Nodenum(T->lchild); Nodenum(T->rchild); } } int TreeDepth(BT *T) { int ldep,rdep; if(T==NULL) return 0; else { ldep=TreeDepth(T->lchild); rdep=TreeDepth(T->rchild); if(ldep>rdep) return ldep+1; else return rdep+1; } }
上傳時(shí)間: 2020-06-11
上傳用戶:ccccy
/** * @author jakcy_wu(wujichun) * * 預(yù)測分析--本算法只適用于受周期變化或者波動(dòng)影響的數(shù)據(jù) * 權(quán)值移動(dòng)平均算法 * 本期預(yù)測值=(前期值*權(quán)數(shù))求和/n * * 默認(rèn)權(quán)值為{1,1,1},取最近3次的平均 * 注意權(quán)值和必須=權(quán)值集合.length */
標(biāo)簽: jakcy_wu wujichun author 算法
上傳時(shí)間: 2014-01-26
上傳用戶:weiwolkt
卷積運(yùn)算:取x(t)和h(t)的長度為nx,nh。平移量n=nh+nx-1,利用for和if語句實(shí)現(xiàn)倒序求和運(yùn)算。外循環(huán)用一個(gè)for語句實(shí)現(xiàn)平移,通過在求和時(shí)取數(shù)組元素的順序?qū)崿F(xiàn)倒序求和
上傳時(shí)間: 2013-12-20
上傳用戶:saharawalker
利用矩量法計(jì)算細(xì)直導(dǎo)線電容隨著分段數(shù)N、半徑a,長度L的變化曲線以及直導(dǎo)線電荷密度分布
上傳時(shí)間: 2016-05-05
上傳用戶:sardinescn
有限期作業(yè)安排問題”描述如下:有n個(gè)任務(wù)J1,J2,...,Jn,每個(gè)任務(wù)Ji都有一個(gè)完成期限di,若任務(wù)Ji在它的期限di內(nèi)完成,則可以獲利Ci(1[i[n) 問如何安排使得總的收益最大(假設(shè)完成每一個(gè)任務(wù)所需時(shí)間均為一個(gè)單位時(shí)間).這個(gè)問題適合用貪心算法來解決,貪心算法的出發(fā)點(diǎn)是每一次都選擇利潤大的任務(wù)來完成以期得到最多的收益 但是對于本問題由于每一個(gè)任務(wù)都有一個(gè)完成的期限,因此在任務(wù)安排過程中除了考慮利潤C(jī)i外,還要考慮期限di.
上傳時(shí)間: 2016-06-27
上傳用戶:s363994250
K-MEANS算法: k-means 算法接受輸入量 k ;然后將n個(gè)數(shù)據(jù)對象劃分為 k個(gè)聚類以便使得所獲得的聚類滿足:同一聚類中的對象相似度較高;而不同聚類中的對象相似度較小。聚類相似度是利用各聚類中對象的均值所獲得一個(gè)“中心對象”(引力中心)來進(jìn)行計(jì)算的。 k-means 算法的工作過程說明如下:首先從n個(gè)數(shù)據(jù)對象任意選擇 k 個(gè)對象作為初始聚類中心;而對于所剩下其它對象,則根據(jù)它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然后再計(jì)算每個(gè)所獲新聚類的聚類中心(該聚類中所有對象的均值);不斷重復(fù)這一過程直到標(biāo)準(zhǔn)測度函數(shù)開始收斂為止。一般都采用均方差作為標(biāo)準(zhǔn)測度函數(shù). k個(gè)聚類具有以下特點(diǎn):各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開
標(biāo)簽: 聚類 K-MEANS k-means 對象
上傳時(shí)間: 2016-07-31
上傳用戶:youlongjian0
K-MEANS算法: k-means 算法接受輸入量 k ;然后將n個(gè)數(shù)據(jù)對象劃分為 k個(gè)聚類以便使得所獲得的聚類滿足:同一聚類中的對象相似度較高;而不同聚類中的對象相似度較小。聚類相似度是利用各聚類中對象的均值所獲得一個(gè)“中心對象”(引力中心)來進(jìn)行計(jì)算的。 k-means 算法的工作過程說明如下:首先從n個(gè)數(shù)據(jù)對象任意選擇 k 個(gè)對象作為初始聚類中心;而對于所剩下其它對象,則根據(jù)它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然后再計(jì)算每個(gè)所獲新聚類的聚類中心(該聚類中所有對象的均值);不斷重復(fù)這一過程直到標(biāo)準(zhǔn)測度函數(shù)開始收斂為止。一般都采用均方差作為標(biāo)準(zhǔn)測度函數(shù). k個(gè)聚類具有以下特點(diǎn):各聚類本身盡可能的緊湊,而各聚類之間盡可能的分開
標(biāo)簽: 聚類 K-MEANS k-means 對象
上傳時(shí)間: 2013-12-19
上傳用戶:chenlong
k-means 算法接受輸入量 k ;然后將n個(gè)數(shù)據(jù)對象劃分為 k個(gè)聚類以便使得所獲得的聚類滿足:同一聚類中的對象相似度較高;而不同聚類中的對象相似度較小。聚類相似度是利用各聚類中對象的均值所獲得一個(gè)“中心對象”(引力中心)來進(jìn)行計(jì)算的。 Matlab 源代碼,以蘭花數(shù)據(jù)集作為測試對象。
上傳時(shí)間: 2014-01-21
上傳用戶:2525775
素?cái)?shù)演算法之程式 能夠快速算出第n個(gè)質(zhì)數(shù)
上傳時(shí)間: 2013-12-21
上傳用戶:skfreeman
量測可變電阻的類比電壓值,並將10位元的良測結(jié)果轉(zhuǎn)換成ASCII編碼,並輸出到個(gè)人電腦上的終端機(jī)
標(biāo)簽:
上傳時(shí)間: 2014-01-19
上傳用戶:hzy5825468
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1