任務(wù)1:以算法5.3創(chuàng)建二叉樹的存儲(chǔ)結(jié)構(gòu),樹的具體形態(tài)自定。 任務(wù)2:對(duì)任務(wù)1中的二叉樹T分別實(shí)現(xiàn)先序、中序、后序遍歷(遞歸實(shí)現(xiàn))和中序遍歷的非遞歸實(shí)現(xiàn)以及層序遍歷; 任務(wù)3:統(tǒng)計(jì)1中二叉樹T的結(jié)點(diǎn)總數(shù)、葉子結(jié)點(diǎn)總數(shù)以及T的高度; 任務(wù)4:交換1中二叉樹T的所有結(jié)點(diǎn)的左右子樹,并對(duì)交換后的二叉樹重新進(jìn)行中序遍歷(和任務(wù)2中的中序遍歷結(jié)果對(duì)比,你有什么發(fā)現(xiàn)?)。
上傳時(shí)間: 2018-07-03
上傳用戶:MOOMWHITE
建立一棵平衡二叉樹及刪去其中某一元素及其所有子樹
標(biāo)簽: 二叉樹
上傳時(shí)間: 2019-05-02
上傳用戶:tianchen
二叉樹的前序、中序、后序遍歷的遞歸和非遞歸算法
上傳時(shí)間: 2020-04-10
上傳用戶:renwwei1986
#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 請(qǐng)選擇菜單號(hào) (0--7)"); scanf("%c",&ch2); getchar(); printf("\n"); switch(ch2) { case'1': printf("\n\t\t請(qǐng)按先序序列輸入二叉樹的結(jié)點(diǎn):\n"); printf("\n\t\t說明:輸入結(jié)點(diǎn)(‘0’代表后繼結(jié)點(diǎn)為空)后按回車。\n"); printf("\n\t\t請(qǐng)輸入根結(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***請(qǐng)注意:輸入有誤!***"); } 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請(qǐng)輸入%c結(jié)點(diǎn)的左子結(jié)點(diǎn):",t->data); t->lchild=CreateTree(); printf("\n\t\t請(qǐng)輸入%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
霍夫曼編碼,包括編碼解碼二叉樹顯示等功能
標(biāo)簽:
上傳時(shí)間: 2014-01-03
上傳用戶:徐孺
哈夫曼樹的建立 一、 實(shí)驗(yàn)?zāi)康模? 1. 理解哈夫曼樹及其應(yīng)用。 2. 掌握生成哈夫曼樹的算法。 二、 實(shí)驗(yàn)內(nèi)容: 哈夫曼樹,即最優(yōu)樹,是帶權(quán)路徑長(zhǎng)度最短的樹。有著廣泛的應(yīng)用。在解決某些判定問題上,及字符編碼上,有著重要的價(jià)值。 構(gòu)造一棵哈夫曼樹,哈夫曼最早給出了算法,稱為哈夫曼算法: (1)根據(jù)給定的N個(gè)權(quán)值 W1,W2,W3,……,Wn ,構(gòu)成N棵二叉樹的集合F= T1,T2,T3,……,Tn ,其中每棵二叉樹T1只有一個(gè)帶權(quán)為WI的根結(jié)點(diǎn),其左右子樹均空。 (2)在 F中選出兩棵根結(jié)點(diǎn)權(quán)值最小的樹作為左右子樹構(gòu)造一棵新的二叉樹,且置新的二叉樹的權(quán)值為其左右子樹上的根結(jié)點(diǎn)的權(quán)值之和。 (3)在F中刪除這兩棵樹,同時(shí)將新得到的加到F之中。重復(fù)(2)和(3),直至F中只剩一個(gè)為止。
標(biāo)簽: 樹 實(shí)驗(yàn) 算法
上傳時(shí)間: 2013-12-24
上傳用戶:陽光少年2016
基于2叉樹svm的入侵檢測(cè)算法,構(gòu)造偏態(tài)二叉
上傳時(shí)間: 2017-04-14
上傳用戶:baitouyu
隨著數(shù)字信號(hào)處理技術(shù)應(yīng)用的不斷深入,數(shù)字信號(hào)處理系統(tǒng)的實(shí)現(xiàn)面臨著很多挑戰(zhàn),其中面臨的四個(gè)主要問題是:速度、設(shè)計(jì)規(guī)模、功耗和開發(fā)周期。因此許多數(shù)字信號(hào)處理的實(shí)現(xiàn)方法被提出,其中基于FPGA的實(shí)現(xiàn)技術(shù)就是其中的重要技術(shù)之一。 本文以數(shù)字信號(hào)處理系統(tǒng)的實(shí)現(xiàn)為應(yīng)用背景,著重研究了基于FPGA的數(shù)字濾波器實(shí)現(xiàn)技術(shù)。本文分為兩個(gè)主要部分: 第一部分以Xilinx公司的FPGA為例,總結(jié)了FPGA設(shè)計(jì)的基本方法及設(shè)計(jì)流程,并在此基礎(chǔ)上介紹了一種用于產(chǎn)品快速開發(fā)的設(shè)計(jì)方式—基于SystemGenerator的設(shè)計(jì)方式,這種設(shè)計(jì)方式向數(shù)字信號(hào)處理系統(tǒng)的設(shè)計(jì)者提供了自上而下的FPGA解決方案。 第二部分系統(tǒng)地研究了基于FPGA的數(shù)字濾波器實(shí)現(xiàn)技術(shù)。該部分首先研究了三種適合于FPGA的FIR濾波器實(shí)現(xiàn)方法,直接結(jié)構(gòu)、轉(zhuǎn)置結(jié)構(gòu)及分布式算法。其次,討論了針對(duì)直接結(jié)構(gòu)FIR濾波器的乘法器優(yōu)化技術(shù),CSD編碼和系數(shù)分解,以及針對(duì)轉(zhuǎn)置結(jié)構(gòu)FIR濾波器的乘法器優(yōu)化技術(shù),簡(jiǎn)化加法器圖,并結(jié)合實(shí)例給出了它們的優(yōu)化效果。再次,介紹了直接結(jié)構(gòu)FIR濾波器中常用多操作數(shù)加法實(shí)現(xiàn)方法,二叉樹和Wallace樹,并在Wallace樹的基礎(chǔ)上提出了一種適合于FPGA的1比特多操作數(shù)加法結(jié)構(gòu),這種實(shí)現(xiàn)結(jié)構(gòu)在實(shí)現(xiàn)采樣字長(zhǎng)與系數(shù)字長(zhǎng)均為l比特的FIR濾波器時(shí),使FPGA的資源利用率得到明顯提高。最后還給出了三種FIR濾波器實(shí)現(xiàn)方法在FPGA中應(yīng)用的優(yōu)缺點(diǎn)及其適用性,并給出了一個(gè)帶通濾波器的設(shè)計(jì)實(shí)例。 論文的研究成果已應(yīng)用于“北斗一號(hào)”導(dǎo)航定位接收機(jī)中。
標(biāo)簽: FPGA 數(shù)字濾波器 實(shí)現(xiàn)技術(shù)
上傳時(shí)間: 2013-08-01
上傳用戶:Andy123456
主要在于在系統(tǒng)啟動(dòng)時(shí)能利用二叉樹搜索算法自動(dòng)掃描單總線上的多個(gè)DS18B20,并提取它們各自的64位的ROM-ID號(hào)!通過這些ID號(hào),就能對(duì)單總線上的多個(gè)DS18B20分別進(jìn)行驅(qū)動(dòng)了。每一行都有詳細(xì)的標(biāo)注,決對(duì)能節(jié)約你的程序閱讀時(shí)間。單片機(jī)是51系列哈。如果有不明白的,請(qǐng)加QQ:278742825
上傳時(shí)間: 2013-04-24
上傳用戶:star_in_rain
部分傳輸序列(PTS)方法通過選擇合適的相位序列以降低信號(hào)峰值出現(xiàn)的概率,該方法不會(huì)使信號(hào)發(fā)生畸變。但是傳統(tǒng)的 PTS 技術(shù)計(jì)算復(fù)雜度非常大,需遍歷所有可選的相位因子,其計(jì)算量隨分割子序列數(shù)按指數(shù)增長(zhǎng)。本文提出了一種正倒二叉樹多層相位序列方法,該方法通過對(duì)稱的樹形搜索,搜索出最優(yōu)的相位序列。仿真結(jié)果表明,該方法大大降低系統(tǒng)的復(fù)雜度,同時(shí) PAPR 得到更好地抑制。
上傳時(shí)間: 2013-11-10
上傳用戶:zjf3110
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1