寫(xiě)出求二叉樹(shù)深度的算法 怎樣計(jì)算一棵樹(shù)的方數(shù)?
怎樣計(jì)算一棵樹(shù)的方數(shù)?樹(shù)干靠近地面的周長(zhǎng)與樹(shù)干靠近樹(shù)冠的周長(zhǎng)相加,然后除以2。這是樹(shù)的平均周長(zhǎng)。將周長(zhǎng)除以3.14得到樹(shù)干的平均直徑。將直徑除以2得到半徑。將半徑乘以3.14得到樹(shù)干的平均橫截面積。橫
怎樣計(jì)算一棵樹(shù)的方數(shù)?
樹(shù)干靠近地面的周長(zhǎng)與樹(shù)干靠近樹(shù)冠的周長(zhǎng)相加,然后除以2。這是樹(shù)的平均周長(zhǎng)。將周長(zhǎng)除以3.14得到樹(shù)干的平均直徑。將直徑除以2得到半徑。將半徑乘以3.14得到樹(shù)干的平均橫截面積。
橫截面積乘以行李箱高度等于行李箱的體積,這是您想要的一側(cè)。但實(shí)際上,更方便的方法是測(cè)量樹(shù)干離地1米的周長(zhǎng)[這個(gè)周長(zhǎng)非常接近平均周長(zhǎng)],然后用這個(gè)周長(zhǎng)計(jì)算直徑、半徑、橫截面積,再乘以高度。
由于二叉樹(shù)是遞歸定義的,因此也可以遞歸定義二叉樹(shù)的深度。二叉樹(shù)的深度=max{左子樹(shù)的深度,右子樹(shù)的深度}+1,其中左子樹(shù)和右子樹(shù)的深度可以按照上面的公式。一般來(lái)說(shuō),二叉樹(shù)深度的定義是Max{從葉節(jié)點(diǎn)到根節(jié)點(diǎn)路徑上的節(jié)點(diǎn)總數(shù)}
當(dāng)二叉樹(shù)滿(mǎn)時(shí),滿(mǎn)二叉樹(shù)的深度與節(jié)點(diǎn)的關(guān)系最多為n=2^H-1,即,節(jié)點(diǎn)總數(shù)等于2-1的高度冪
計(jì)算二叉樹(shù)深度的第一步是確定節(jié)點(diǎn)。以下是計(jì)算二叉樹(shù)的詳細(xì)步驟:
1。樹(shù)只有一個(gè)節(jié)點(diǎn),其深度為1;
2。二叉樹(shù)的根節(jié)點(diǎn)只有左子樹(shù)而沒(méi)有右子樹(shù),因此可以判斷二叉樹(shù)的深度應(yīng)該是其左子樹(shù)的深度加1;
3。二叉樹(shù)的根節(jié)點(diǎn)只有右子樹(shù)而沒(méi)有左子樹(shù),則可以判斷二叉樹(shù)的深度應(yīng)該是其右子樹(shù)的深度加1;
4。如果二叉樹(shù)的根節(jié)點(diǎn)既有右子樹(shù)又有左子樹(shù),則可以判斷二叉樹(shù)的深度應(yīng)該是其左子樹(shù)和右子樹(shù)的較大深度加1。
深度為K和2^K-1節(jié)點(diǎn)的二叉樹(shù)稱(chēng)為完全二叉樹(shù)。該樹(shù)的特點(diǎn)是每層的節(jié)點(diǎn)數(shù)為最大節(jié)點(diǎn)數(shù)。在二叉樹(shù)中,除了最后一層,如果所有其他層都滿(mǎn)了,并且最后一層要么滿(mǎn)了,要么右邊缺少幾個(gè)連續(xù)的節(jié)點(diǎn),那么二叉樹(shù)就是一個(gè)完整的二叉樹(shù)。
具有n個(gè)節(jié)點(diǎn)的完整二叉樹(shù)的深度是floor(log2n)1。深度為K的完全二叉樹(shù)至少有2k-1個(gè)葉節(jié)點(diǎn),最多有2k-1個(gè)葉節(jié)點(diǎn)。