正如維基百科中所述,有多種遍歷樹數據結構的算法。但是其中一些算法是其他算法的組合,比如雙向搜索對其他圖形而非樹木幾乎有用。但是對於一棵樹,我們幾乎不知道樹的結尾,我們只能從根開始或從其子開始。什麼是最優化的遍歷樹的算法(方法)?
在這種情況下,我們也許能夠納入搜索過程中多或多線程。但我找不到任何綜合的方法來描述這一點。
現在我的問題是,基本上什麼是遍歷樹的最優化的方式,當我們不能夠訪問整個數據結構(能夠對其進行索引,等等類似的文件目錄)?
正如維基百科中所述,有多種遍歷樹數據結構的算法。但是其中一些算法是其他算法的組合,比如雙向搜索對其他圖形而非樹木幾乎有用。但是對於一棵樹,我們幾乎不知道樹的結尾,我們只能從根開始或從其子開始。什麼是最優化的遍歷樹的算法(方法)?
在這種情況下,我們也許能夠納入搜索過程中多或多線程。但我找不到任何綜合的方法來描述這一點。
現在我的問題是,基本上什麼是遍歷樹的最優化的方式,當我們不能夠訪問整個數據結構(能夠對其進行索引,等等類似的文件目錄)?
嘗試在二叉搜索樹的序遍歷。搜索的複雜度是nlogn,遍歷是n,這被認爲是最好的。
例:http://www.geeksforgeeks.org/binary-search-tree-set-1-search-and-insertion/
最優化的算法通常是一個特定用例和平臺進行了優化。
不要緊,你是否做序,序或後序。或者您是否執行DFS或BFS。 重要的是:
這是什麼實際上呢?例如,如果它是一個文件系統,那麼獲取每個文件的清單通常比直接清單更快(因爲您*實際上「可以訪問整個數據結構」)。不過,你不會比線性時間做得更好。 – Ryan