算法層面,樹基本上到處都是(當然有些時候是隱性的)。計算機執行指令是線性的,程序代碼也是順序的,是個壹維結構,壹旦需要解決高維問題,利用棧、隊列等壹維基礎結構所能做到的只有樹,而樹則可以用來描述高維邏輯,起到了個橋梁作用。
算法舉例如下。
狀態空間遍歷類:DFS、BFS
決策類:各種自動機(特例還有退化為壹位情況的KMP)、貪心、分治、動態規劃(同屬狀態空間遍歷)、匹配
圖與流:尋路(最短路)、生成樹
應用舉例就更多了,例如XML、DOM樹、編譯器中的模式識別和語法樹、JSON數據傳遞、磁盤路徑結構……
樹的普遍取決於它的結構與通常解決問題的算法的壹致性和結構簡單嚴謹:遞歸定義、拓撲有序(無環)、實現簡單。當面臨高維狀態時,其它結構的處理方式幾乎壹定不如轉化為樹來的簡單,所以就成為了組織壹維實現與高維邏輯中的橋梁。