編程的50種基礎(chǔ)算法 二叉樹(shù)的層次遍歷和圖的廣度優(yōu)先搜索的相同點(diǎn)和不同點(diǎn)?
二叉樹(shù)的層次遍歷和圖的廣度優(yōu)先搜索的相同點(diǎn)和不同點(diǎn)?相似性:兩者都從節(jié)點(diǎn)B開(kāi)始,并訪問(wèn)其相鄰節(jié)點(diǎn)一次。對(duì)于樹(shù),它是它的左、右子節(jié)點(diǎn),而圖是一個(gè)連接的節(jié)點(diǎn)。區(qū)別:對(duì)于圖,一個(gè)頂點(diǎn)有多個(gè)相鄰節(jié)點(diǎn),而只有兩
二叉樹(shù)的層次遍歷和圖的廣度優(yōu)先搜索的相同點(diǎn)和不同點(diǎn)?
相似性:兩者都從節(jié)點(diǎn)B開(kāi)始,并訪問(wèn)其相鄰節(jié)點(diǎn)一次。對(duì)于樹(shù),它是它的左、右子節(jié)點(diǎn),而圖是一個(gè)連接的節(jié)點(diǎn)。
區(qū)別:對(duì)于圖,一個(gè)頂點(diǎn)有多個(gè)相鄰節(jié)點(diǎn),而只有兩個(gè)二叉樹(shù)。另外,當(dāng)在寬度上遍歷圖時(shí),需要添加一個(gè)visited[mavx]數(shù)組來(lái)記錄訪問(wèn)的節(jié)點(diǎn),以避免重復(fù)訪問(wèn)同一個(gè)節(jié)點(diǎn)。例如:(A1,A2)(A1,A3)(A2,A3)訪問(wèn)A1之后,寬度遍歷將訪問(wèn)A2和A3,訪問(wèn)A2之后,它將再次訪問(wèn)A3。這是重復(fù)的。另外,圖是不連通的,而二叉樹(shù)是不連通的。
采用鄰接表存儲(chǔ)的圖的深度優(yōu)先遍歷算法類似于二叉樹(shù)的先序遍歷,為什么是先序呢?
這是因?yàn)閳D的深度優(yōu)先遍歷算法首先訪問(wèn)節(jié)點(diǎn),然后訪問(wèn)其相鄰點(diǎn)。它類似于二叉樹(shù)的順序遍歷,首先訪問(wèn)子樹(shù)的根節(jié)點(diǎn),然后訪問(wèn)子樹(shù)的子節(jié)點(diǎn)(鄰接點(diǎn))。圖的廣度優(yōu)先遍歷算法類似于二叉樹(shù)的層次遍歷。