遍歷 廣度優先與深度優先

2021-08-20 12:09:47 字數 1182 閱讀 6623

第一步,建立佇列,元素操作規則為:佇列尾部加入元素,頭部移除元素

第二步,把資料夾加入該佇列

第三步,從該佇列頭移除資料夾,同時依次遍歷它的所有孩子,如果孩子是檔案,則提取;

如果孩子是資料夾,則加入佇列尾部

第四步,重複第三步;直到隊列為空為止。到此資料夾中所有檔案都被獲取

//獲取資料夾下所有檔案

public

list

getfolderfiles(string foldername)else }}

}return

list;

}

第一步,建立棧

第二步,資料夾folder(0)入棧

第三步,peek方式遍歷棧頂資料夾,即唯讀資料,不出棧,如果第乙個遍歷到的孩子是檔案,則直接刪除,然後繼續遍歷;如果第乙個遍歷到的孩子是資料夾folder(1),則先暫停遍歷folder(0),同時把folder(1)入棧,此時,棧中有兩個元素,棧頂為folder(1),棧底為folder(0)

第四步,重複第三步,直到folder(n)為空,此時,刪除folder(n),同時foldern出棧,此時,棧頂元素為folder(n-1),由於刪除folder(n)時,暫停了folder(n-1)的遍歷,那麼現在folder(n)處理完成了,就繼續folder(n-1)的遍歷……直到處理完folder(n-1)的所有孩子,folder(n-1)為空,刪除folder(n-1),同時folder(n-1)出棧

第五步,執行完以上所有步驟,就處理完了folder(0)所有的孩子,folder(0)為空,刪除folder(0),folder(0)出棧,到此刪除資料夾folder(0)完成

//深度優先遍歷刪除資料夾

public

void

deletefolder(file folder)else }}

//檢測棧頂元素是否為空,為空則表示該資料夾中的孩子已經全部刪除

file temp = deletestack.peek().listfiles();

if (temp == null && temp.length == 0)}}

深度優先遍歷與廣度優先遍歷

深度優先遍歷 1 深度優先遍歷的遞迴定義 圖的深度優先遍歷類似於樹的前序遍歷。採用的搜尋方法的特點是盡可能先對縱深方向進行搜尋。這種搜尋方法稱為深度優先搜尋 depth first search 相應地,用此方法遍歷圖就很自然地稱之為圖的深度優先遍歷 2.基本實現思想 1 訪問頂點v 2 從v的未被...

深度優先遍歷與廣度優先遍歷

深度優先遍歷 1 深度優先遍歷的遞迴定義 圖的深度優先遍歷類似於樹的前序遍歷。採用的搜尋方法的特點是盡可能先對縱深方向進行搜尋。這種搜尋方法稱為深度優先搜尋 depth first search 相應地,用此方法遍歷圖就很自然地稱之為圖的深度優先遍歷 2.基本實現思想 1 訪問頂點v 2 從v的未被...

深度優先遍歷與廣度優先遍歷

深度優先遍歷 1 深度優先遍歷的遞迴定義 圖的深度優先遍歷類似於樹的前序遍歷。採用的搜尋方法的特點是盡可能先對縱深方向進行搜尋。這種搜尋方法稱為深度優先搜尋 depth first search 相應地,用此方法遍歷圖就很自然地稱之為圖的深度優先遍歷 2.基本實現思想 1 訪問頂點v 2 從v的未被...