判別是否為完全二叉樹 如何判斷二叉樹是否為完全二叉樹?
如何判斷二叉樹是否為完全二叉樹?1. 首先,了解什么是完整的二叉樹。完全二叉樹是從完全二叉樹派生出來的。完全二叉樹的倒數(shù)第二層必須是完全二叉樹,最后一層可能不是完全二叉樹,但是葉節(jié)點(diǎn)是連續(xù)的。2. 如
如何判斷二叉樹是否為完全二叉樹?
1. 首先,了解什么是完整的二叉樹。完全二叉樹是從完全二叉樹派生出來的。完全二叉樹的倒數(shù)第二層必須是完全二叉樹,最后一層可能不是完全二叉樹,但是葉節(jié)點(diǎn)是連續(xù)的。
2. 如何判斷它是否是一個完全二叉樹
我們使用層次遍歷來判斷它是否是一個完全二叉樹。遍歷時有兩種情況
如果有一個右子樹沒有左子樹,它肯定不是一個完全二叉樹
如果有一個節(jié)點(diǎn)不是所有的左子樹和右子樹,那么后面的節(jié)點(diǎn)必須是一個葉節(jié)點(diǎn)。如果它不是葉子節(jié)點(diǎn),它肯定不是一個完整的二叉樹二叉樹
以java代碼為例
區(qū)別在于最后一層。全二叉樹定義,除最后一層外,每層上的所有節(jié)點(diǎn)都有兩個子節(jié)點(diǎn),也就是說倒數(shù)第二層上的每個節(jié)點(diǎn)都有兩個子節(jié)點(diǎn),所以最后一層上的節(jié)點(diǎn)數(shù)必須是倒數(shù)第二層的兩倍,這樣最后一層上的節(jié)點(diǎn)就不能缺失。一個完整的二叉樹的最后一層的節(jié)點(diǎn)數(shù)可以是倒數(shù)第二層的兩倍(一個完整的二叉樹必須是一個完整的二叉樹),也可以是一個或兩個。但是,這些丟失的節(jié)點(diǎn)只能是最右邊的節(jié)點(diǎn)。
完全二叉樹與滿二叉樹的區(qū)別?
我們之所以說不能畫圖,是因?yàn)槲覀儾恢朗裁词恰巴暾钡亩鏄?/p>
!地板上的第一個繪制方法根本不是完全二叉樹
完全二叉樹左右子樹的高度差不應(yīng)大于1,左子樹的高度不應(yīng)小于右子樹的高度
繪制方法如下:
先計(jì)算節(jié)點(diǎn)數(shù),再計(jì)算樹的高度(層數(shù)),然后直接繪制
第一個節(jié)點(diǎn)必須是根節(jié)點(diǎn),它的左、右子樹應(yīng)該從最下面的一層刪除,它必須是一個完整的二叉樹
根據(jù)這個計(jì)算出左、右二叉樹的節(jié)點(diǎn)數(shù),然后根據(jù)這個分配剩余的節(jié)點(diǎn)到左、右子樹
這樣循環(huán)直到所有節(jié)點(diǎn)都用完為止