判斷是否是完全二叉樹(shù)算法 如何判斷二叉樹(shù)是否為完全二叉樹(shù)?
如何判斷二叉樹(shù)是否為完全二叉樹(shù)?1. 首先,了解什么是完整的二叉樹(shù)。完全二叉樹(shù)是從完全二叉樹(shù)派生出來(lái)的。完全二叉樹(shù)的倒數(shù)第二層必須是完全二叉樹(shù),最后一層可能不是完全二叉樹(shù),但是葉節(jié)點(diǎn)是連續(xù)的。2. 如
如何判斷二叉樹(shù)是否為完全二叉樹(shù)?
1. 首先,了解什么是完整的二叉樹(shù)。完全二叉樹(shù)是從完全二叉樹(shù)派生出來(lái)的。完全二叉樹(shù)的倒數(shù)第二層必須是完全二叉樹(shù),最后一層可能不是完全二叉樹(shù),但是葉節(jié)點(diǎn)是連續(xù)的。
2. 如何判斷它是否是一個(gè)完全二叉樹(shù)
我們使用層次遍歷來(lái)判斷它是否是一個(gè)完全二叉樹(shù)。遍歷時(shí)有兩種情況
如果有一個(gè)右子樹(shù)沒(méi)有左子樹(shù),它肯定不是一個(gè)完全二叉樹(shù)
如果有一個(gè)節(jié)點(diǎn)不是所有的左子樹(shù)和右子樹(shù),那么后面的節(jié)點(diǎn)必須是一個(gè)葉節(jié)點(diǎn)。如果它不是一個(gè)葉子節(jié)點(diǎn),那么它肯定不是一個(gè)完整的二叉樹(shù)二叉樹(shù)
以java代碼為例
讓我們來(lái)談?wù)勥@個(gè)方法,并自己編寫(xiě)。完全二叉樹(shù):如果二叉樹(shù)的高度設(shè)為h,則每層(1-h-1)中的節(jié)點(diǎn)數(shù)除第h層外都達(dá)到最大值,并且第h層中的所有節(jié)點(diǎn)都連續(xù)地集中在最左邊。這是一個(gè)完整的二叉樹(shù)。一旦樹(shù)中有一個(gè)左fork節(jié)點(diǎn),判斷所有后續(xù)節(jié)點(diǎn)是否都有一個(gè)子節(jié)點(diǎn)就非常簡(jiǎn)單了。否則,該樹(shù)不是一個(gè)完整的二叉樹(shù)。在實(shí)現(xiàn)中使用隊(duì)列。