樹 四種遍歷

2021-08-21 09:28:23 字數 869 閱讀 9720

1、四種遍歷概念

(1)先序遍歷:先訪問根節點,再訪問左子樹,最後訪問右子樹。

(2)  後序遍歷:先左子樹,再右子樹,最後根節點。

(3)中序遍歷:先左子樹,再根節點,最後右子樹。

(4)層序遍歷:每一層從左到右訪問每乙個節點。

每乙個子樹遍歷時依然按照此時的遍歷順序。

如下圖:

先序遍歷:fcadbehgm

後序遍歷:abdchmgef

中序遍歷:acbdfhemg

層序遍歷:fceadhgbm,層序遍歷一般很少用。

2、實現

(1)遞迴實現,遞迴實現難理解但是很容易實現,先序遍歷先操作根節點,之後遞迴先左後右。中序遍歷先遞迴左子樹,再操作根節點,再遞迴右子樹。後序遍歷先遞迴左子樹再遞迴右子樹之後再操作根節點。這樣實現起來就很簡單了。

//遍歷實現先序

//根左右

void preorder(tree t)

}//遍歷實現中序

//左根右

void preorder(tree t)

}//遍歷實現後序

//左右根

void preorder(tree t)

}

(2)非遞迴實現,非遞迴實現比較麻煩但是好理解,麻煩的是需要用到棧。

1、先序:首先把根節點壓入棧中,此時根節點作為棧頂元素彈出訪問。將當前節點的右子樹和左子樹分別入棧,考慮棧是先入後出因此必須先右子樹先入棧,左子樹後入棧。重複上述步驟直到棧為空。

2、中序:

3、後序:

Map四種遍歷方式

mapmap new hashmap map.put key1 value1 map.put key2 value2 map.put key3 value3 第一種 普遍使用,二次取值 system.out.println 通過map.keyset遍歷key和value for string key...

Map的四種遍歷

entryset物件實現set介面,內部儲存所有key和value的鍵值對iterator iterator map.entryset iterator while iterator.hasnext for entryentry map.entryset keyset物件也實現了set介面,內部儲存...

map的四種遍歷

map是一種常見的儲存資料的集合,對其的遍歷也很常見,這裡做一下總結 public static void main string args 第二種 system.out.println 通過map.entryset使用iterator遍歷key和value iterator it map.entr...