深度優(yōu)先遍歷非遞歸 層序遍歷二叉樹與經(jīng)典遞歸遍歷的性能差距多大?
層序遍歷二叉樹與經(jīng)典遞歸遍歷的性能差距多大?遞歸遍歷二叉樹程序很短,易懂。在性能方面,遞歸速度快,占用內(nèi)存少。但遞歸程序包含深度優(yōu)先和廣度優(yōu)先的遍歷方法,比較復(fù)雜,容易出錯(cuò)。現(xiàn)在CPU速度非???,堆棧
層序遍歷二叉樹與經(jīng)典遞歸遍歷的性能差距多大?
遞歸遍歷二叉樹程序很短,易懂。在性能方面,遞歸速度快,占用內(nèi)存少。但遞歸程序包含深度優(yōu)先和廣度優(yōu)先的遍歷方法,比較復(fù)雜,容易出錯(cuò)。
現(xiàn)在CPU速度非??欤褩?臻g非常大。性能差異可以忽略不計(jì)。
或遞歸遍歷二叉樹程序可讀性更好。
問:由鄰接矩陣怎么求深度遍歷和廣度遍歷以及詳細(xì)過程?
你想要代碼嗎?讓我們先用鄰接矩陣來畫圖。深度優(yōu)先遍歷使用遞歸。對(duì)于一個(gè)節(jié)點(diǎn),它遞歸地訪問它沒有訪問過的相鄰節(jié)點(diǎn)。就像走在迷宮里。當(dāng)你知道沒有路可走時(shí),你可以往回走,找到下一個(gè)十字路口。寬度優(yōu)先遍歷使用隊(duì)列。當(dāng)一個(gè)節(jié)點(diǎn)不在隊(duì)列中時(shí),它會(huì)將其未訪問的鄰居節(jié)點(diǎn)排隊(duì)。就像嚴(yán)重近視的人一樣,如果掉了眼鏡,他們會(huì)先找到最近的圓,然后再擴(kuò)大一點(diǎn)。每次遍歷都使用VIS數(shù)組標(biāo)記來確保每個(gè)節(jié)點(diǎn)只被訪問一次。