等比數(shù)列前n項(xiàng)和公式 如何判斷二叉樹(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)。如果不是葉子節(jié)點(diǎn),則絕對(duì)不是一個(gè)完整的二叉樹(shù)二叉樹(shù)
以java代碼為例
定義:如果二叉樹(shù)的深度設(shè)置為h,則除h層外的所有層(1~h-1)的節(jié)點(diǎn)數(shù)都達(dá)到最大值,h層的所有節(jié)點(diǎn)都連續(xù)地集中在左側(cè),這是一個(gè)完整的二叉樹(shù)。
所以,第一行有1=2^0,第二行有2=2^1,依此類推,第n行有2^(n-1)
那么總數(shù)是一個(gè)等比序列,前n行有2^n-1
很明顯,一維數(shù)組是按下標(biāo)順序表示的,我們可以找到在完全二叉樹(shù)中的位置
假設(shè)數(shù)組從a[1]開(kāi)始,例如a[25],25=15 10=(2^4-1)10,那么a[25]就是完全二叉樹(shù)的第四個(gè)定義:深度為K且節(jié)點(diǎn)數(shù)為N的二叉樹(shù)稱為完全二叉樹(shù)當(dāng)且僅當(dāng)每個(gè)節(jié)點(diǎn)對(duì)應(yīng)于深度為K的完全二叉樹(shù)中從1到N的節(jié)點(diǎn)時(shí)。特征:葉節(jié)點(diǎn)只能出現(xiàn)在層次結(jié)構(gòu)的兩個(gè)最大級(jí)別上;對(duì)于任何節(jié)點(diǎn),如果其右分支的子代的最大級(jí)別為l,則其左分支的子代的最大級(jí)別必須為l或L1全二叉樹(shù):深度為K,冪為2(K)-1的二叉樹(shù)特征:每層上的節(jié)點(diǎn)數(shù)為最大節(jié)點(diǎn)數(shù)。完全二叉樹(shù)必須是完全二叉樹(shù)。完全二叉樹(shù)不一定是完全二叉樹(shù)