一、區別算法
1) 二叉樹的深度優先遍歷的非遞歸的通用作法是採用棧,廣度優先遍歷的非遞歸的通用作法是採用隊列。數據庫
2) 深度優先遍歷:對每個可能的分支路徑深刻到不能再深刻爲止,並且每一個結點只能訪問一次。要特別注意的是,二叉樹的深度優先遍歷比較特殊,能夠細分爲先序遍歷、中序遍歷、後序遍歷。具體說明以下:設計
廣度優先遍歷:又叫層次遍歷,從上往下對每一層依次訪問,在每一層中,從左往右(也能夠從右往左)訪問結點,訪問完一層就進入下一層,直到沒有結點能夠訪問爲止。 遞歸
3)深度優先搜素算法:不所有保留結點,佔用空間少;有回溯操做(即有入棧、出棧操做),運行速度慢。隊列
廣度優先搜索算法:保留所有結點,佔用空間大; 無回溯操做(即無入棧、出棧操做),運行速度快。內存
一般 深度優先搜索法不所有保留結點,擴展完的結點從數據庫中彈出刪去,這樣,通常在數據庫中存儲的結點數就是深度值,所以它佔用空間較少。程序設計
二、結論擴展
因此,當搜索樹的結點較多,用其它方法易產生內存溢出時,深度優先搜索不失爲一種有效的求解方法。 二叉樹
廣度優先搜索算法,通常需存儲產生的全部結點,佔用的存儲空間要比深度優先搜索大得多,所以,程序設計中,必須考慮溢出和節省內存空間的問題。搜索
但廣度優先搜索法通常無回溯操做,即入棧和出棧的操做,因此運行速度比深度優先搜索要快些