遍歷與訪問
A. 二叉樹的前序中序後序遍歷訪問順序是怎麼回事啊搞不懂
樹的遍歷的三種情況,是根據左子樹、右子樹、根這3者的不同訪問次序來定義的。根左右(根先訪問),則為先序遍歷;左根右,則為中序遍歷;左右根,則為後序遍歷。舉例如下:前序遍歷結果為:ABC中序遍歷結果為:BAC後續遍歷結果為:BCA
B. 按照先序遍歷訪問二叉樹,應該是多少
先序遍歷也叫做先根遍歷、前序遍歷,可記做根左右(二叉樹父結點向下先左後右)。
首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左、右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹,如果二叉樹為空則返回。
所以這道題的解題如下:
訪問根結點A,接著訪問它的左子樹,(A)
它的左子樹的根結點B,接著訪問它的左子樹,(AB)
它的左子樹的根結點D,接著訪問它的左子樹,左子樹為空,訪問它的右子樹F(ABDF)
它的右子樹F無子結點,回到根結點D的層次,左右子樹訪問完畢
回到根結點B的層次,訪問它的右子樹根結點E,(ABDFE)
接著訪問它的左子樹G,且G無子結點,退回根結點E的層次,訪問它的右子樹H,且H無子結點,E的子樹訪問完畢,(ABDFEGH)
退回根結點B的層次,B的子樹訪問完畢,
退回根結點A的層次,訪問它的右子樹C,且C無子結點,返回A的層次,A的左右子樹訪問完畢,且A是這個二叉樹的根結點,故完成先序遍歷(ABDFEGHC)
C. java ArrayList 隨機訪問、遍歷 性能
說ArrayList在進行隨機訪問和遍歷元素時,能提供較好的性能應該是跟LinkList對比的吧,插入刪除操作多的話用LinkList比較好,《Java編程思想》是這樣說的
D. 二叉樹先根、中根、後根遍歷詳細訪問順序
你可以參考下這個問題
這個是中根遍歷的詳細過程
http://..com/question/89674628.html
理解以後應該能理解前根以及後根的遍歷順序
前根遍歷順序為根->左子樹->右子樹
那個題目前根遍歷的順序為1-2-4-5-3-6-7
後根遍歷順序為左子樹->右子樹->根
此題的後根遍歷順序為4-5-2-6-7-3-1
E. 說明圖遍歷演算法中設置訪問標志數組的作用
圖中結點可能有多個前驅,設置訪問標志數組主要是為了避免重復訪問同一個結點。
圖的遍歷是從圖中的某個頂點出發,按照某種方法對圖中的所有頂點訪問且僅訪問一次。為了保證圖中的各頂點在遍歷過程中僅訪問一次,需要為每個頂點設一個訪問標志。
例如可以為圖設置一個訪問標志數組visited[n],用於標示圖中每個頂點是否被訪問過,其初始值為0(「假」)。如果訪問過頂點vi ,則設置visited[i]為1(「真」)。
(5)遍歷與訪問擴展閱讀
由於圖結構本身的復雜性,所以圖的遍歷操作也較復雜,主要表現在以下四個方面:
① 在圖結構中,沒有一個「自然」的首結點,圖中任意一個頂點都可作為第一個被訪問的結點。
② 在非連通圖中,從一個頂點出發,只能夠訪問它所在的連通分量上的所有頂點,因此,還需考慮如何選取下一個出發點以訪問圖中其餘的連通分量。
③ 在圖結構中,如果有迴路存在,那麼一個頂點被訪問之後,有可能沿迴路又回到該頂點。
④ 在圖結構中,一個頂點可以和其它多個頂點相連,當這樣的頂點訪問過後,存在如何選取下一個要訪問的頂點的問題。
F. 深度優先遍歷,如何判斷已經訪問
深度優先遍歷,如何判斷已經訪問方法,首先選定一個未被訪問過的頂點V作為起始頂點(或者訪問指定的起始頂點V),並將其標記為已訪問過;
(2)然後搜索與頂點V鄰接的所有頂點,判斷這些頂點是否被訪問過,如果有未被訪問過的頂點,則任選一個頂點W進行訪問;再選取與頂點W鄰接的未被訪問過的任一個頂點並進行訪問,依次重復進行。當一個頂點的所有的鄰接頂點都被訪問過時,則依次回退到最近被訪問的頂點。若該頂點還有其他鄰接頂點未被訪問,則從這些未被訪問的頂點中取出一個並重復上述過程,直到與起始頂點V相通的所有頂點都被訪問過為止。
G. 對連通圖進行一次先深遍歷可訪問圖的全部頂點,對嗎
圖的遍歷從圖中某一頂點出發,按某種搜索方法訪遍其餘頂點,且使每一頂點僅被訪問一次。這一過程稱為圖的遍歷。遍歷圖的基本搜索方法有兩種:深度優先搜索DFS(Depth First Search)和廣度優先搜索BFS(Broad First Search)。這兩種方法都適用於有向圖和無向圖。圖的遍歷演算法設計需要考慮3個問題: (1)圖的特點沒有首尾之分,所以演算法的參考要指定訪問的第一個頂點。 (2)對圖的遍歷路徑有可能構成一個迴路,從而造成死循環,所以演算法設計要考慮遍歷路徑可能的迴路問題。 (3)一個頂點可能和若干個頂點都是想鄰頂點,要使一個頂點的所有想鄰頂點按照某種次序被訪問。對於連通圖,從初始頂點出發一定存在路徑和圖中的所有其他頂點相連,所以對於連通圖從初始頂點出發一定可以遍歷該圖。圖的深度優先遍歷圖的深度優先遍歷DFS演算法是每次在訪問完當前頂點後,首先訪問當前頂點的一個未被訪問過的鄰接頂點,然後去訪問這個鄰接點的一個未被訪問過的鄰接點,這樣的演算法是一個遞歸演算法。 1.連通圖的深度優先遍歷演算法思想。(1)訪問初始頂點v並標記頂點v已訪問。(2)查找頂點v的第一個鄰接頂點w。(3)若頂點v的鄰接頂點w存在,則繼續執行;否則回溯到v,再找v的另外一個未訪問過的鄰接點。(4)若頂點w尚未被訪問,則訪問頂點w並標記頂點w為已訪問。(5)繼續查找頂點w的下一個鄰接頂點wi,如果v取值wi轉到步驟(3)。直到連通圖中所有頂點全部訪問過為止。【例】 現以圖 7.9 ( a )為例說明深度過優先搜索過程。假定 v 1 是出發點,首先訪問 v 1 。因 v 1 有兩個鄰接點 v 2 、 v 3 均未被訪問過,可以選擇 v 2 作為新的出發點,訪問 v 2 之後,再找 v 2 的未訪問過的鄰接點。同 v 2 鄰接的有 v 1 、 v 4 、 v 5 ,其中 v 1 已被訪問過,而 v 4 、 v 5 尚未被訪問過,可以 v 4 選擇作為新的出發點。重復上述搜索過程,繼續依次訪問 v 8 、 v 5 。訪問 v 5 之後,由於與 v 5 相鄰的頂點均已被訪問過,搜索退回到 v 8 。由於 v 8 、 v 4 、 v 2 都是已被訪問的鄰接點,所以搜索過程連續地從 v 8 退回到 v 4 , 再退回到 v 2 ,最後退回到 v 1 。這時選擇 v 1 的未被訪問過的鄰接點 v 3 ,繼續往下搜索,依次訪問 v 3 、 v 6 、 v 7 ,從而遍歷了圖中全部頂點。