1. 程式人生 > 其它 >Leaflet中對滑鼠按下、移動事件監聽實現移動單個圖形

Leaflet中對滑鼠按下、移動事件監聽實現移動單個圖形

遍歷方法

BFS(寬度優先搜尋)

以下圖的順序進行訪問

即先被訪問的結點先拿出來
與其相似地,佇列也具有先進先出的特點

DFS(深度優先搜尋)

以下圖的順序進行訪問

先序遍歷

以下圖的順序進行訪問

即按照 根 左 右的順序訪問

函式實現:使用遞迴的方法

點選檢視程式碼
// 遞迴求深度,NIL=-1
void set_depth(int u, int d) {
    if (u == NIL) return;
    D[u] = d;
    set_depth(T[u].left, d + 1);
    set_depth(T[u].right, d + 1);
}

中序遍歷

以下圖的順序進行訪問

即按照 左 根 右的順序訪問

函式實現:

點選檢視程式碼
void set_depth(int u, int d) {
    if (u == NIL) return;
    set_depth(T[u].left, d + 1);
	D[u] = d;
    set_depth(T[u].right, d + 1);
}

後序遍歷

以下圖的順序進行訪問

即按照 左 右 根的順序訪問

函式實現:

點選檢視程式碼
void set_depth(int u, int d) {
    if (u == NIL) return;
    set_depth(T[u].left, d + 1);
	set_depth(T[u].right, d + 1);
	D[u] = d;
}

結論

所以我們就可以通過一棵樹對應的三種訪問順序來還原這棵樹
比如如果一棵樹的先序,中序,後序訪問順序分別為
1 2 3 4 5
3 2 4 1 5
3 4 2 5 1
那麼我們就可以還原出這棵樹是下圖的樣子

注意:只有三種順序都具備的條件下才能還原,缺一不可