深度遍歷和廣度遍歷的區(qū)別 樹的深度遍歷和先序遍歷是一回事嗎?廣度遍歷呢?
樹的深度遍歷和先序遍歷是一回事嗎?廣度遍歷呢?二叉樹的一階,二階,中間階。深度和廣度是常見的樹木。深度遍歷:從樹的根開始掃描,從頂層開始掃描,從一層最左邊(或最右邊)的節(jié)點(diǎn)掃描到底層,直到下層沒有節(jié)點(diǎn)
樹的深度遍歷和先序遍歷是一回事嗎?廣度遍歷呢?
二叉樹的一階,二階,中間階。深度和廣度是常見的樹木。深度遍歷:從樹的根開始掃描,從頂層開始掃描,從一層最左邊(或最右邊)的節(jié)點(diǎn)掃描到底層,直到下層沒有節(jié)點(diǎn)為止。此時,將掃描所有最左側(cè)(右側(cè))的節(jié)點(diǎn)。從樹的頂部后退一步,查看層旁邊是否有兄弟節(jié)點(diǎn)。如果有,從最左邊(右邊)掃描。這是一個遞歸概念,使用此方法遍歷整個樹。寬度遍歷:從樹的根開始掃描,掃描第一層的所有節(jié)點(diǎn),掃描第二層的所有節(jié)點(diǎn),掃描底部節(jié)點(diǎn)。
圖的廣度遍歷和深度遍歷是唯一的么?
如果它們的存儲結(jié)構(gòu)已確定,則它們是唯一的。
因?yàn)樵诖鎯χ校谝粋€頂點(diǎn)和頂點(diǎn)之間的鄰接順序是人工定義的。如果我們只從邏輯上考慮算法,它們就不是唯一的
你想要代碼嗎?讓我們先用鄰接矩陣來畫圖。深度優(yōu)先遍歷使用遞歸。對于一個節(jié)點(diǎn),它遞歸地訪問它沒有訪問過的相鄰節(jié)點(diǎn)。就像走在迷宮里。當(dāng)你知道沒有路可走時,你可以往回走,找到下一個十字路口。寬度優(yōu)先遍歷使用隊(duì)列。當(dāng)一個節(jié)點(diǎn)不在隊(duì)列中時,它會將其未訪問的鄰居節(jié)點(diǎn)排隊(duì)。就像嚴(yán)重近視的人一樣,如果掉了眼鏡,他們會先找到最近的圓,然后再擴(kuò)大一點(diǎn)。每次遍歷都使用VIS數(shù)組標(biāo)記來確保每個節(jié)點(diǎn)只被訪問一次。