C#實現(xiàn)二叉樹遍歷算法_第1頁
C#實現(xiàn)二叉樹遍歷算法_第2頁
C#實現(xiàn)二叉樹遍歷算法_第3頁
C#實現(xiàn)二叉樹遍歷算法_第4頁
C#實現(xiàn)二叉樹遍歷算法_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

C#實現(xiàn)二叉樹遍歷算法用C#2.0實現(xiàn)了二叉樹的定義,怎么構(gòu)造一顆已知的二叉樹,用幾種常規(guī)的算法(先序,中序,后序,層次)遍歷二叉樹。希望能給有需要人帶來幫助,也希望能得到大家的指點。有關(guān)C#數(shù)據(jù)結(jié)構(gòu)的書在書店里找到,網(wǎng)上也是極少,如果你有好的學(xué)習(xí)資源別忘了告訴我。先謝了。數(shù)據(jù)結(jié)構(gòu)對一個程序員來說,現(xiàn)在是太重要了,數(shù)據(jù)結(jié)構(gòu)學(xué)得好的人,邏輯思維一定很強,在程序設(shè)計的時候,就不會覺得太費勁了。而且是在設(shè)計多層應(yīng)用程序的時候,真是讓人絞盡腦汁啊。趁自己還年輕,趕緊練練腦子。哈哈,咱們盡快進(jìn)入主題吧。本程序中將用到一棵已知的二叉樹如圖(二叉樹圖)所示。下面簡單介紹一下幾種算法和思路:先序遍歷:訪問根結(jié)點按先序遍歷左子樹;按先序遍歷右子樹;4.例如:遍歷已知二叉樹結(jié)果為:A->B->D->G->H->C->E->F

中序遍歷:按中序遍歷左子樹;訪問根結(jié)點;按中序遍歷右子樹;例如遍歷已知二叉樹的結(jié)果:B->G->D->H->A->E->C->F后序遍歷:按后序遍歷左子樹;按后序遍歷右子樹;訪問根結(jié)點;例如遍歷已知二叉樹的結(jié)果:G->H->D->B->E->F->C->A層次遍歷:從上到下,從左到右遍歷二叉樹的各個結(jié)點(實現(xiàn)時需要借輔助容器);例如遍歷已知二叉樹的結(jié)果:A->B->C->D->E->F->G->H附加整個解決方案代碼:二叉遍歷算法解決方案usingSystem;usingSystem.Collections.Generic;

usingSystem.Text;namespacestructure二_“二_義〃二叉樹結(jié)點數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)域,左右結(jié)點以及父結(jié)點成員;Tdata;nodes<T>Lnode,Rnode,Pnode;…set{data=value;}get{returndata;}…<5

S_alue;}set{Rnode=value;}:?set{Pnode=value;}publicnodes(){}publicnodes(Tdata)

…;-先序編歷二叉樹#region先序編歷二叉樹Console.WriteLine(rootNode.Data);PreOrdervT>(rootNode.LNode);—#endregion構(gòu)造一棵已知的二叉樹#region構(gòu)造一棵已知的二叉樹

staticnodesvstring>BinTree(){nodes<string>[]binTree=newnodesvstring>[8];〃創(chuàng)建結(jié)點binTree[0]=newnodesvstring>("A");binTree[1]=newnodes<string>("B");binTree[2]=newnodesvstring>("C");binTree[3]=newnodesvstring>("D");binTree[4]=newnodesvstring>("E");binTree[5]=newnodesvstring>("F");binTree[6]=newnodesvstring>("G");binTree[7]=newnodesvstring>("H");〃使用層次遍歷二叉樹的思想,構(gòu)造一個已知的二叉樹binTree[0].LNode=binTree[1];binTree[0].RNode=binTree[2];binTree[l].RNode=binTree[3];binTree[2].LNode=binTree[4];

binTree[2].RNode=binTree[5];binTree[3].LNode=binTree[6];binTree[3].RNode=binTree[7];〃返回二叉樹的根結(jié)點:“"i#endregion中序遍歷二叉樹#region中序遍歷二叉樹MidOrdervT>(rootNode.LNode);Console.WriteLine(rootNode.Data);

#endregion后序遍歷二叉樹#region后序遍歷二叉樹staticvoidAfterOrdervT>(nodesvT>rootNode){if(rootNode!=null){AfterOrdervT>(rootNode.LNode);AfterOrdervT>(rootNode.RNode);Console.WriteLine(rootNode.Data);}}#endregion層次遍歷二叉樹#region層次遍歷二叉樹staticvoidLayerOrdervT>(nodesvT>rootNode){nodes<T>[]Nodes=newnodes<T>[20];intfront=-1;

intrear=-1;rear++;front++;rootNode=Nodes[front];Console.WriteLine(rootNode.Data);i_rear++;if(rootNode.RNode!=null)

rear++;Nodes[rear]=rootNode.RNode;}}}#endregion測試的主方法#region測試的主方法staticvoidMain(string[]args){nodes<string>rootNode=BinTree();Console.WriteLine(”先序遍歷方法遍歷二叉樹:");PreOrdervstring>(rootNode);Console.WriteLine(”中序遍歷方法遍歷二叉樹:");MidOrdervstring>(rootNode);C

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論