java數(shù)據(jù)結(jié)構(gòu)_第1頁
java數(shù)據(jù)結(jié)構(gòu)_第2頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一章:緒論1、計ri機(jī)科技的w大支w:i、數(shù)據(jù)結(jié)構(gòu)2、_ -程序=數(shù)裾結(jié)構(gòu)+燈法2、數(shù)據(jù)結(jié)構(gòu)定義是一N研究非數(shù)仿計兌的程序設(shè)計問題屮計兌機(jī)的揀作對象以及它們之間的關(guān)系和操作等等的學(xué)科。玫據(jù)Da:足對位息的-種符弓農(nóng)示。在計57機(jī)科學(xué)屮足衍所釘能輸入到il W機(jī)中并波計算機(jī)稅序處理的符3的總稱。數(shù)據(jù)元素(I)ata Element)足數(shù)裾的堪本中.位.A計算機(jī)程序屮通常作為一個體 進(jìn)行考慮和處理。個數(shù)掂兒索"門II若十個數(shù)掂項組成。數(shù)槲項足數(shù)則的4、"J分別的圮小中 數(shù)據(jù)結(jié)構(gòu)(Data Structure):足相h:之間介/H 種成多種特定關(guān)系的數(shù)樅元索的集 合。3. 數(shù)椐

2、結(jié)構(gòu)主®衍邏糾結(jié)構(gòu)和物理結(jié)鉤數(shù)鋸之間的相互關(guān)系稱為邏拊結(jié)構(gòu)。通常分為叫類堆本結(jié)構(gòu):集合 結(jié)構(gòu)屮的數(shù)裾元敘除ruw r種類#外.別尤其它關(guān)系。 線性結(jié)構(gòu)結(jié)構(gòu)中的數(shù)裾元秦之間存在一對一的關(guān)系。樹型結(jié)構(gòu)結(jié)構(gòu)中的數(shù)據(jù)元東之m存作一對多的關(guān)系。圖狀結(jié)構(gòu)或網(wǎng)狀結(jié)構(gòu) 結(jié)構(gòu)中的數(shù)裾元素之叫介7|:多對多的關(guān)系。4. 數(shù)據(jù)結(jié)構(gòu)在計算機(jī)中有兩種不M的表示方法:順序存儲結(jié)構(gòu):川數(shù)拋元索在存fi/i器屮的相對位腎來衣¥數(shù)裾元索之N的邏輯關(guān) 系。鏈?zhǔn)酱鎯Y(jié)構(gòu):在毎一個數(shù)據(jù)元素中増加一個存放地址的指針,用此桁針?biāo)伪硎?數(shù)據(jù)元索之間的邏樹關(guān)系。5、數(shù)據(jù)對象:坫種數(shù)掘類咿元蒺的集介。例:枘數(shù)的數(shù)據(jù)對象是&

3、quot;-3, -2, -1, 0. 1,2, 3, 英文符類制的數(shù)據(jù)對象B, C. D. E, F.) 敵據(jù)類型:在一種祝印設(shè)計講言中,變量所具有的數(shù)據(jù)種類。6.數(shù)椐結(jié)構(gòu)的三個方而:7、算法用杣象的W肖描述解決特定問題的辯一步的俠作。程序足il ff機(jī)能ffl解和執(zhí)行的桁令序列。一個構(gòu)序丈現(xiàn)一個m去。«法和構(gòu)序的ix:別是訂法的執(zhí)行是存窮的,而程序的執(zhí)行吋以是無限的.8、時間復(fù)雜度:時間復(fù)雜度為o< n2)的二重循環(huán)。 ini n=9;for(int i=o;i<cd+)foiXint j=0;j<oj+) SxstexxhOirt4MinW*j);int n=

4、9; toittnt i=O;i<cui+) fortini j=O;j<Uj+>,時間復(fù)雜度仍為SysteiruQMt4wi_*j); 二重循環(huán)的執(zhí)行次數(shù)為 0(/。n(n +1)2-4.時間復(fù)雜度為O<nlog2n)的二盧循環(huán)。 int n=8; forttnt i=i;i<=cu*=2) foitint j=1 ;j<=cuj+)Sys texxLQuLpcinUi *j);循環(huán)次數(shù)為時間復(fù)條度為O<nlog2冰V n - O (n log 2 n)«.時間復(fù)雜度Wa)的二重?fù)?jù)環(huán) int n=8; torlint i=l;K=rKiA=

5、2) forUnl j=1 ;j<=i;j+) System. outprint(i*j):總的循環(huán)次數(shù)為fe時間g雜度為91、什么是集合通i怡況卜 riwi+iiiNj性質(zhì)的一類東內(nèi),聚成一個幣體,就吋以稱為集合。 比如,用Java編稅的所冇程序員,全體屮M人等。2、什么是集合框架集合桐架是為表示和操作集介而規(guī)定的一種統(tǒng)一的標(biāo)準(zhǔn)的體系結(jié)構(gòu)。任何集介 框架都包介三大塊內(nèi)容:對外的接U、接U的實現(xiàn)和對集合運算的兌法。3、集合框架對我們編程有何助益:它減少了稈廳S計的卒窮、它提W FR庁逨 度和質(zhì)莆。10、CoUechon接口是一允許承i(的對象。組成對的鍵一值對象,Set接繼承Collec

6、uoii.但不允許重復(fù),使用H己內(nèi)部的一個排列機(jī)制。 List接LI繼承Collecuoii,允許艱仏 以元農(nóng);插的次W來放?元系,不會朮新 排列.即所持Yi的是key-value pairs <. Map中不能打的kevo擁fn'i己的內(nèi)部作列機(jī)制。矜器屮的冗系炎職都為Object。從界器収以元農(nóng)時,必油把它轉(zhuǎn)換成盼來的炎型.第四韋:遞歸1、遞|門的定義 矜一個對象部分地包介它FILL,成用它fl l!給I'ld定義,則稱 這個對象是遞Di的:打一個過稈fi:接地成m技地調(diào)mrid,則稱這個過is是遞 歸的過程。第五章:數(shù)組列表1、線性衣是由n (nO)個相同類型的數(shù)據(jù)

7、元素al,a2t . an組成的有限序列, 記作:LineaiList=al,a2,., an艽中,表示線性表的元索個數(shù),稱為線性農(nóng)的長度。2、線性表的順序存儲結(jié)構(gòu):足用一飢連續(xù)的/f儲單元岣呼介:放線件農(nóng)的數(shù)W元 索,數(shù)樅元索A內(nèi)介的物理介儲次序勾它們在線性農(nóng)屮的邏料次序是一致的, 即數(shù)據(jù)元素m勺jl;前驅(qū)數(shù)據(jù)元粲1及后繼數(shù)據(jù)元紊ai+l的位苻相鄰。5、為什么需要串行化:希鉛AmiyList對象保存到文件中,以便于恢G使用。6、如何實現(xiàn)類可串行化:見練習(xí) packav Java.io;public interface Serializable /標(biāo)記接口7、_是允許以一致的方式對集合對象的元

8、系進(jìn)行汸14的對象。迭代器對象一W發(fā)現(xiàn)另一個對象在結(jié)構(gòu)上修改這-集介,就Hr上么報錯。這是因 為一口.你開始對一個ArrayLisr對象進(jìn)行迭代,就小能冉修改這個AirayList完 糧性。W此彈出 CoiicuiientModificatioiiExcepdoii1.亨W CoUecuon技I I含義及乃法 Collection 接 口Collection總穿次銘構(gòu)中的根摶U。Collection表示一組對象, 這些對象也稱為collection的兀尜。JDK小提供此接口的任M 直接束現(xiàn):它提供具體的子接門(如Set和List)丈現(xiàn)。 Collection 方法: paclugejmitil

9、 public imerface Colleedon mt sizeO;送0此 coBeedon 中的元去ft- boolean Lsf mptyOj如吳此 collsticn 不念元IL 11 返9 true. booleflDContamsCObjecto);? 4dS此eoDtioc包含播定的元X賈使E true. Iterator iieratort)riSB在此calkctioii 的無進(jìn)行斟t的送代篇. ObjoctQ ioArra>(X返回色含此eolkrtian中所有元親的番軋 Object0 i&lrra>fObject aD);1)逆H色含此coBtcd

10、on 中帝有元紊的教也. boolein >dd(Ob>ct oX WfitttcoIkaiDo Mffi定的元史 C 可MWH . >001視0快:0扣0>從此collcdon中移»抱定元董的單個實« SD榘存棚 話(可選灌作). bookan contaixuMllCoIlectioii ckvloMft cfiUtoioa 含櫓定 coUectwn 中的所有元ft. W返回 <就lionc);轉(zhuǎn)嫩史 coUecbon 中的所_元童4V滅to費此 coDection 巾 MeanjenwrlCoIkcoonc):移詠Jt eollmion

11、中押曲電包含在措史collection 中 oolt)-m.ll(CnIlrrtionc)y * 僅保此coIlectioKi 中,4£也任含在投定>1111100 的 void dearQ 此collectkm 申的(蚵選 1作 boolean aquOfajoet of 比快此 eoILrtian 與衛(wèi)走對象相豕 ini buhCcdeOi 返S此 coUartwo 的份粉HS-2. VW Collection I »j List tfcl I的關(guān)系見練>本1 VW ArrayList »j數(shù)泔之fuj的關(guān)ArravList Xj數(shù)組進(jìn)tfTJII

12、 序,蚍續(xù)UJ 本4 從川戶角度如何理解ArravLLSt i從開發(fā)7i flj度如何理W ArravList ? AixavList比數(shù)組多/一叫増減數(shù)據(jù)的方法o5 VWAnayList常用力法的介義及使用賺.見I5P1216 會實現(xiàn) ArrayList 的關(guān)卬介fifi簡化版.tiWJtx常川的力從 size); LsEinpryij; contains(Objectoj ; index0f(Object clem) ; add(Object o): removeObject o) ; clears); ger (mt mdex);set (mt index. Object element

13、)< 1) public mt sizeQ return size, (2) public boolean isEmptyv)if(size=Ojreturn uue,return false.< 3) public Boolean contains;Object o) return mdexOfopO, )(4> publicintLndexOf(Object elein) if (elem null) for (mt i = 0, l < size, i+) if ( el ement Dateinull) return i.for (mt l 0, l <

14、size; i+) if(elem equals elemenrDateL) return i.retuni-1.(5) public booLeanadd(Object o)ensureCapaatsize+1)» elementDatesize+J«o,return true.(6) public Object remove(int mdex) if(iQdex<O|iadex>=size)return null.Object temp-elementDateind ex. fonjut pindex,j<aze,j+) elemenrDatej-el

15、enientDatej+1 】,size-,return temp.(7) public void clcar()modCount+>fortmt i=0j<size,i+4jd emcntData l=du11, size 0,(8) public Object getmtindcx)邊 liid ex< 0| |ind ex>-az e j return null,return eLemeutDateind ex,(9)7現(xiàn)解done方法的貪義.并淺克降度克降迸行說叫及陽示 為什么需要克?。?艦決得一個副木,即另一份拷W。 如何實現(xiàn)類可克隆 package java

16、.lang; public interface Cloneable /標(biāo)記接口 Eg public Object cloneQ ArravList v = (AiravList)super.c 1 one0, / copies sizev.elenieiitData = new Object【size,Svsteni.arraycopy(elen)eiitDa(a< 0, v.elenientData.O, size), v.modCouut = 0,return v; )catch (CloneNotSuppouedExceplion e) / tins shouldift happe

17、n, since we aie Cloneable throw new lnteinalEnorO.)myListlmvList3常 WJSIIKona,Kihei1. 教w上的習(xí)題、上機(jī)題、常川兒個方法的吋問鉍雜度4. 曲讀程序,寫出運行結(jié)果AmyList lefnew ArravLisr,Let addcpj,kt.add(0, Vj,let addC),System out.pimtLmlet.iudexOWJ),let remove 1System. out.pnntin(let get 1),Svstein out.pLintln(let coataiumJ,5. AnayList屮

18、定義丫、個方法,說明該方法在炎屮正確的方法名稱 public Int unkown(ObJect elem) if (ekm = null) for (int i = 0; 1 < size; i+) if (cleniciitDalai|=nulb return i;I else ror (int i = 0; i < size; i+) if (elem.eqiials(elementDatai) return i; return -I;6. 假ArrayList屮添加如卜方法.W出埒個方法的力法體 public boolean addFirst (Object elemenr

19、 ipublic boolean addLast (Object element)public Object removeFirst()public Object removeLast() public Object getFirst () public Object getLast、)第六章:鏈表 一、貶求1. 對象變對象丈體關(guān)系.m示說明的甲變w勺糾象變w:的I*:別2. 以個鏈農(nóng)為介實現(xiàn)Linked List的陽匕版.包常用的Zj'iA size(): isEmpcyu: contamsObject o); indexOf(Object elemj : add(Object o)

20、; removeObjct o) :ger tint index; ; set (mt index. Object elemenrj: get (int index); getFirstjgetLasrv removeFu:st() jmoveLastiJ A.5pubLic class MyLinkedList Entry header, mr SLze,public MyLinkedList ()head mew Entnnulljiull), SLze-O; public int size(j return size, public boolean isEmpty() l£(s

21、lzc0) return true, elseretum false, .public boolean add(Object o) Entry q-new Entnojiull), Entry p=head er, whde<p next=nulljp-p n«t,p.next-q, SLZC+, return true, public void add(mt indcx.Object elemcat)/*if(Lndex<O|iDdex>size)throw Ind exOutOfBouik sExccpa on(+slzc)/ Entry q-new Entry

22、elementiull), Entry p-hcader.forint l 雪 04<mdex4+)p=p next,6 6q next麵 p next, p.nexr-q,SLZC+, public boolean containObject dem)Enuy p-headernext, xvhdetp,=oull)if(p. el ement. equa I s( elem) return true,ppnext,return false, /public Object get(mr index八if(ind ex<0|ind ex>-sze)Entrv q-header

23、. foi|mt i-04<Lndex4+) q-q.next,return q,public Object reniovemt index) if(ind ex< 0| |ind ex>-az e) return null. Entry q=header, foimr j=indexj<size1j+)q-q next.q.next-q.next ne?ct. size-, return q, /public int mdexOf(Object d«n, if (dem null) for(int l - 0. l < size, i+) if (el

24、ementDatefinull) return l, else for(int l 0, l < size> i+) if (elem equals(elemenrDatei) return i, return -1,3. 寧握滬環(huán)a衣定義并以甲.環(huán)鏈衣的形式丈現(xiàn)上題:見練習(xí)4. 掌擁奴端鏈衣定義并以雙瑞鏈農(nóng)的形式實現(xiàn)上題:見練)J5. 笮握雙向鏈衣、嘆叫晰壞鋌衣概念及定義:公_出叫貼壞61衣的仙入、刪除閽小以及 會書寫部分代碼:見卜6. 從用P炻度如何押解LmkedUst?從汗發(fā)芥«/£如何押解LinkedList?7 VM. LinkedList常川/認(rèn)的介

25、義及使川脈:地書FU50S如何胛解鏈A:/儲結(jié)構(gòu)屮設(shè):吶兵(鍋點的方式7/79 如何川LLukedList 屮 header &據(jù)hkM哨兵問Jprivute transient Entry header = new Enlry(nulL null); private transient int size 0;11.悶述 LinkedLLSt *j AixayList 發(fā)別如果何用程序?qū)鋫€尜引位宵的元索進(jìn)打人黽存収/刪除操作.An-avList對象耍遠(yuǎn)遠(yuǎn)優(yōu) J . Linked List 對象.如川W序t®對列表進(jìn)行循環(huán),并幾在循壞的時候進(jìn)行插入成荇刪除操作, LmkedL

26、ist對象攰遠(yuǎn)遠(yuǎn)優(yōu)J; ArravList對象.12你足如何押解迭代器丁作?平揮迭代器的忮用/法:w卜1. 單鏈表的特點:修個元索(農(nóng)項)由結(jié)點(AWr)鉤成: 線性結(jié)構(gòu)header lol "HilAl點nf以個連純介儲表可擴(kuò)充。Z插入結(jié)點笫一種情況:在笫一個結(jié)點前插入public void addFirst(Objcct o) / make new EntryEntry newEnlry new Entry(o. null); ncwEnti y.next = licadei.next, header .next = new Entry; size十十:newEntrl |new

27、Entrheader | 1 二 |header(插入前)(插入后)/第二種情況:在鏈表中間插入newEntry. next =current.next = newEntiy ;new KnlcurrentLU-new Kn值current(插入后(插入前),第三種情況:在鏈表末尾插入 newEntry.next = current.next; urrent,next = newEntry;newEnt | |curren 貧n ewEntrv DOi(插入前)(插入后)3. 刪除結(jié)點(1) public Object removeFirst()/ (assumes list not empt

28、y) Object first= header.nexLelement; header.next = hcader.next.next; size; return first; )(2) public Object removeLast()(Entry pre = header; Entry current=pre.next; whilef current .next != null) pre= current; current = current<next; ) prc.next=null; size; return current.element; I4、遍歷為了顯示鏈農(nóng),從head

29、er開始,沿著引川鏈從一個鏈結(jié)點到卜一個鏈結(jié)點。 變!|I cuiienc按順#桁向符一個陸結(jié)點。Curieut ft宂桁向header,那坍存第-個 鏈節(jié)點的引用。public void displayList() System.out>print(,fList (header->last):"); Entry current = headennext;/ start at beginning of listv hile(current != null)/ until end of list.current.(lisplnyEiitry();/ print datacu

30、rrent = current.next; / move to next EntrySystem, out. printin5、査找*public int indexOflObject o) ini index = 0;for (Entry e = headennext; e != null; e = e.next) if (o.eq uals( e.elemen t) return index; index+; return -1; I public boolean containObject o) return indexOf(o) != -1; I6、獲取(1) public Objec

31、t getFirstO if (size= =0)throw new NoSuchElementException();return header>next«element; I(2) public Object get (int index)(if (index < 0 II index >= size) throw new IndexOutOfBoiindsExceptioiM"Index: M+index+ ”,Size: M+size); Entry e = header.next; for (int i = 0; i < index; i+

32、) e = e*next; return e.elcnicnt; (3) public Object getLast() 7、雙端鏈表X乂端鏈表與傳統(tǒng)的鏈表非常相似,似是它有一個新特性:對砧后一個鏈結(jié) 點的引用,就像對第一個鏈結(jié)點的引用一樣。迭代器Iterator 接口 package ja'D iitil, public interface Iterator boolean liasNext(), Object nexty, void lemoveO, ) List Iterator 接口 package ja'D.util, public interface Listlte

33、rator extends Iterator boolean liasNextQ, Object nextQ; void lemoveO; boolean liasPieviousQ, Object previousQ. int iiex(Index()5 int previouslnde void set(Object o), void add (Object o); )二、常蚍題H1. 教M上的習(xí)題2. 上機(jī)題3. 常用幾個方讓的時叫0雜度4. 閱讀程序,寫出運行結(jié)果Linked List let-new LmkedListO, let adWJ, let add(0, V”, ktadd

34、(“e”),System out.pnndn(lct. ind exOf( p” j let removal), System. out.pimtln(let.get(l). System out.ptmthxlet. containsC1), Svstcm out.pLintln(let. getFu:st(),5. LmkedList屮定義/一個/法,說叫改/法在炎屮正碗的/i丄名稱 public me unko n(Object o)int index o,for (Entry e - header next, c = null, e 畫 e.uext) if (o equal s(e.

35、 el emem) return index, lndex-H-. return -1; 1. LinkedList屮定義了一個方法.說明該方認(rèn)在類屮止峋的捕、V、稱 public Object unkowixjnt index) if (index < 0 | index >= size) hrow new Ind exOutOfBound sExcepnon( Ind ex ,+index+, Size +size Entry* c - header next.for (mt l 0, i < index,i+) e-cnext.letuine element,10/11

36、第七章隊列和棧一、要求1. 莩握隊列、找的堪本槪念:見F2. 利川申鏈表實現(xiàn)找(一般不S盔哨兵,中.鏈表的頭火棧頂)3. 利用數(shù)組實現(xiàn)棧(棧底為。1)4 簞択利用ArravList、LinkedList實現(xiàn)找5. 牮握利用雙端-衣實現(xiàn)隊列6. 常択利用ArravList、LinkedList實現(xiàn)隊列7. 以Queue或SKick為例.W述繼承介成的使用方認(rèn)s.窄W棧、隊列所科萬法的含義及使用1、隊列是元素的序列,在隊列中:(1) 只能在隊列尾進(jìn)行插入;(2) 只能/I:隊列頭迸行刪除、獲取和修改. 特點:先進(jìn)先出:2、棧(stack)棧的定義和特點定義:限定儀作衣尾進(jìn)行插入成刪除操作的線件衣,

37、表尾一找頂,衣尖一棧底, (允許插入和刪除的一端稱為棧頂(top),K一端稱為棧底(bonom):不介元素的空衣稱空棧:特點:先進(jìn)后出(HLO)或后進(jìn)先出(LIFO);3、堆棧足一個元茗#列。堆找中唯一能被刪除、I方問成修改的元躬足記近插 入的元袞。這個元素就是位T堆棧頂部的那個元素。TOP -敁近捕入的數(shù)據(jù)元索PUSH -入棧,在找頂插入一個數(shù)槲元索POP -出棧,刪除棧頂?shù)臄?shù)你元素4、下面操作輸入的結(jié)果是多少:Stack inyStack = new Stackf ); for (int i = 0; i < 10; i+)niyStack.push (new Integer (i

38、* i); while (ImyStack.isEmpty()gui.println (myStack.pop();結(jié)果是:0、1、4、9、16、25、36、49、68、81二、 常 WSiH1. 教W上的題、上H 常川兒個方法的時叫«雜度4. y出卜列W序段的輸出結(jié)果public static void main(Scnng args )fl/£T聲誑凹蟲柚3明樹X二WWWXW2SW-E互 '明神士球曲士莩¥ 教雎好解組不啤穿鈞+_»#迪;5¥接 事_« 等_曲綠+明穿W眘擗茇二新一求S樹寨®每財X二:宴V蚩 Vp

39、>qsnd s V)dod i=p) (Xudtugsrx.bpq.u c(p啡nd 丄(»)siunbj pi'yi Mod s=p “<jdrassrspqM "ppafqo V)?oas au = ipns (a x>fqo'S jpasV。卽 piOA羽收明7?總叩.4】即”年職:S/ 7 xkrpmjdano wiasASVAlnidino TnajsXsVa) ononj)ap f) (Uiduigsi*J)t >pqa aqu) onan&ro b c(x) anantppt) 7x) Qnin&TO &

40、amp; 7x)0%(人加puirqo aqu)J)0jujocjcq3 auu)&aou) annxpYhaDuiuio in -a %t5l»K>Tnrq;3 iun-x npiircqo (brwnO .uou-0 arunj) ( sjc Pui.ns>tncui pioa onms onqnd1辟屮哄MSAMfhH K7 x)upuudmo tusjsas 7Atoidino tus.<s4(Aldod s (XvidingsT s; bpqav '(A) wioavqo.iwu)qsnds IodS c(x)qsnd s c( <4

41、C)wioujvqj .uQU)qsnd s VViods Aqsnds Y(crc)naioEicqo Ai3U)qsnd s cfx)qsnd s c (c5|c) wiotnrqo.(co<) wpcjcqo auu 'A*x waocjvqo YOI tepas .似u S spas2. 熟悉出二乂W的5個性質(zhì):兇卜3亨握二叉樹的叫種遍歷方法:先根.中根.后極.寬度優(yōu)先遍歷4窄W二乂搜索W的慨念?5. VW二叉樹使用鏈?zhǔn)酱鎃結(jié)構(gòu)吋結(jié)點描述及二叉樹的描述(定義用數(shù)組存儲完全二叉樹是非常有效的。 完全二叉樹能用ArrayList存儲么?可以,其效率等同于用數(shù)組來存儲.如果用L

42、inkedList存譴呢? 不是一個很好的選擇。對于無序的數(shù)組,ArrayList,或者LinkedList集 合插入、査找或者刪b的時間復(fù)雜度是的線6. 帑擁二義搜/few的捕入九糸m #能夠依據(jù)該訂法t成一腳j二義搜索w,會川漢說描 述刪除元素的算法?兄練習(xí)7. 教W屮BinSearchTrec類屮ft找某-個乂索的算法?S.完全二叉樹采H1順序介W紡構(gòu)實現(xiàn),試描述二叉W的定義及實現(xiàn)木方法? K樹的定義W是由n (n 0)個結(jié)點組成的有限集合。如果11=0.稱為空樹:如果11 > 0.則1)冇一個特定的稱之為根(loot)的結(jié)點,它只冇ft接后繼.但沒冇ft接前 驅(qū);2)除報以外的其

43、它結(jié)點劃分為m (iii>=0)個互+相交的有限集合T0, Tl,.,Tm-l,每個集介乂是一棵樹,井且稱之為根的子樹。2、樹的特點:毎棵子樹的報結(jié)僅打一個接前馭,但可以脊0個成多個 ft接后繼。夂二叉樹的性質(zhì):1) 若二叉樹的層次從0開始,則在二叉樹的第i層最多有2i個結(jié)點。(iO)2) 島度為h的二叉樹城多有2/+1-1個結(jié)點(/i之-】)3) 對任何一棵二叉樹,如果其葉結(jié)點有0個,度為2的非葉結(jié)點有n2個, 則有:n0=n2+l若設(shè)二叉樹的髙度為b則共有/>+1層.冇n (n > 0)個結(jié)點的完個二叉樹的咼度為riog2(/rtl)1-1性如將一棵有個結(jié)點的完全二叉樹自

44、 頂向下,同一層自左向右連續(xù)給結(jié)點編號0,則有以下關(guān)系:若則f無雙親若/>0,則I的雙親為L(/-iy2 若則/的左子女為2*1+1.若2*/+2 < w,則/的右子女為2巧+2 s若/為偶數(shù),且0. 則其左兄弟為hl,若5)/為奇數(shù),且門/1-1, 則其右兄弟為#+14、遍歷二叉樹(見書上)5、儲存結(jié)構(gòu)BinSeaichTiee炎+坫Java巣介框架的一部分.但是它實現(xiàn) Collection接LL實際上,BmSearchTree只實現(xiàn)Collection接口的輕微擴(kuò)充:Set接口。Set接口 繼承了 Collection接口,并且不允許冇®父的值。6、public bo

45、olean contains (Object o) Entiy temp = root, int coinp.(teiup.element);while (temp != null) comp = (CoinparableJo)xonipareTo if (comp = 0)return true, if (comp < 0) tenip = temp.left, elsetemp = temp, fight; )/ wiule return false, )/ comains7、averageTime("> 是 O(log n).二、 常見題El1. 教m上的題、上機(jī)題

46、、常用兒個方法的時問«雜度2. 從一棵仝的二叉排序W開始,將以卜關(guān)鍵碼俏依次插入:25.13,1531,7,20,37.沽相出插 入全部完成的二叉作序W.3. 給出卜列二叉數(shù)的先根、屮根.歷的結(jié)Z:序列。4 W的柚本槪念第十韋:TreeMap、TreeSct一 W要求1. 笮W映WNIap接【I及Jt的穴義?15/152 V握史介Set接U及其的含義?3比較Cdlecnon接I I及U Set接口的S別 Set對Coolecuon進(jìn)行了限制,限制f 的部分4. VW TieeMap數(shù)據(jù)存儲結(jié)構(gòu),TieeMap »內(nèi)部結(jié)點的定義?5窄握Tredvfap類有常用萬法含義及使用方

47、法6使川TreeMap炎屮返M鍵災(zāi)、鍵仇圯方法.熟悉這方法如何使川迭代器? package tteeinappack.import java util *,public class TestTreeMap public static void rmin(Stnng args) TreeMap rml-new TreeMap),/* Svstem. out pnntln( 'sEmptv-"+tml isEmpt)人/ tml:put( 20090101-ka”,tml put、”20090203”,wangwiT),/ System out.pnntlnC put-"

48、;+cml.pui( 20090203", wangwu"),*/ tml:put("20090102", zhangsm”),tml.put(M20090104e,huluM)>/System, out. pnntln(弘卜” +tml.get( 20090203u), System.out puntliK pur-* +unl put(M20090203* 1 wwangwu j). System.out.piindiK get-*+unl geawM20090203J),System, out pnntlxi( size= +0111512,

49、", System, out piintinisEmpty+tmlLsEmptyx),/*Itenitoc LtLunl keySetG.uernonj, w hile(itr. hasNext()System.out.pnnt(H M+itt.next(), System, out puntloo.Iterator a-mil valueaj.iterator, while(it.hasNext)System out.pnnt(n M+it.next<)> System. out.pLintlix), Iterator lte-tml enuySeH).Ltewtoc(

50、), uhile(itehasNext()System outpiinHH H+ite nexc),*/TreeNtap ttn2-nev TreeMap(),tm2.puttn20090305n, q<iqqqJ,tmZputAlltml),/Ireraror irr=tm2.keySenj.iteraronj,while(itr.hasNex)jSystem out.printsH H+itr.next(), System. outprindiK )>Iterator it=tm2 vaLuesjiteratocO, whileLt.hasNex)System out.pnnt

51、M ”+itnext0/, System, out.pnndix).Iterator ite=tm2 entrySettj iterator, 16/16whilc(Lte.hasNext()System outpnntf ”+irc/System out.pnndn( ,+tm2 remove(,20090305j). System.out.pondix +tm2 coatainsKeyM20090305*)» System, out pundnC +tm2 coatainsVaiuefqqqqq ), tm2 deanj.Iterator iti-=tm2.keySet().Lt

52、emtoct)>while(ia.basNext()System.out.prrntC M+itr.next()>7. 比較 Comparator IS I 1 Compatible 1611?綠)J8 TrcrSet炎有哪哼常用方法,解釋方法的介義?9. 比較TreeMap與TreeSet區(qū)別勺聯(lián)系(從用戶的角度、從開發(fā)人員的角度)?10. -VW TreeMap與TreeSet的簡笮應(yīng)用(汴總釘序)1、映射(MAP )足一種覽介,災(zāi)介屮的毎個數(shù)裾元系邡由W部分組成:_一的 鍵(KEY)部分和ft(ALUE )部分。2、Java 屮定義:public mteiiace Map將鍵

53、映射到值的對象。一個映射不能包介甫ft的鍵:毎個鍵扱多只能映射到 一個值。Map接U提供三種collection視閣,允許以鍵集、fft集成鍵-fft映射關(guān)系集的 形式舎看某個映射的內(nèi)容。映射聯(lián)冷定義力迭代器在映射的collecuon視閣上 返回其元累的順序。坫呰映射實現(xiàn)可明確保證其順序,如Tree Map類;另一呰 映射實現(xiàn)則不保iiE順序,如Hash Map類。3、用迭代器遍歷students里的元素:Iteratoi id = students.entiySet( ).itei3tor(), while (itt.liasNexc()gui.pnntln (iu.next(),用迭代器遍

54、歷students里的鍵值:Iterator in = suidents.keySet( ).irerator(); wlule (iti.iiasNexl()giii.printlii (iu.iiext(), 用迭代器遍歷students里的值:Iteratoi itr = students.values( ).iteiatoi(); while (iti.hasNext()gui.piiiKlii (iti.next(),4、Comparator接口允許用戶在一個類甲.珣蓋此接口.例如,如果我們想 Scriug對象按照字符串長度來抹序宋鋝代原來的方法.例如:public class Bv

55、Lengtli mipleinents Coinpaiator public mt compaie (Object ol, Object o2) renirn (Stnng)o 1 ).lengrh() - (Scring)o2).length();)/ compaie/ uses Object s veision of equals )/ class ByLengihTieeMap youiMap = new TieeMap (new BxLength(),youiMap.pin (“yes”,new Integer (1); youiMap.put (“no”,new Integer (1

56、 ), yoinMap.pnt (“inaybe new Integer (1); youiMap.pin (“tme, new Integei (1),vourMap.put (“false”,new Inceger (1), /現(xiàn)在關(guān)鍵'/按u:度來排卬,其鍵不允許am a卩長度相冋的). Iterator itr = yourMap.keySet( ).iteratoi(); while (itt.hasNext()giu.pnutln (iu.next(); 輸出結(jié)果:uovesHueniavbe5、由F thesaunisMap對象-棵紅JSW,向它的svuonyniList中插入第i個 元索時,進(jìn)差情況下,大約箱要log2i對第1、2n個元素可以用總的花費 來作為敁大開銷時間:iilog2ii6、TreeSet1) TreeSet對象是一個小允許元紊屯®的苻序巣合。2) 雉本I: TreeSet類的對象足所打元東邡釘相Mffi的TreeMap對象。3) TreeSet類和BinSeaicliTiee類有相l(xiāng)“j的A法,但wb TreeSet類比較快,乍少 在最壞情況下.對 丁 add,leinoxe,和 contains, woistTiine(ii) log n, BinSeai

溫馨提示

  • 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

提交評論