二叉樹的基本算法 堆一定是完全二叉樹嗎?
堆一定是完全二叉樹嗎?堆的邏輯結(jié)構(gòu)是一個完整的二叉樹,要求節(jié)點的關(guān)鍵字有一定的順序(最大的堆是父節(jié)點的關(guān)鍵字,大于等于子節(jié)點的關(guān)鍵字,最小的堆是父節(jié)點的關(guān)鍵字,小于或等于子節(jié)點的關(guān)鍵字)。對于完全二叉
堆一定是完全二叉樹嗎?
堆的邏輯結(jié)構(gòu)是一個完整的二叉樹,要求節(jié)點的關(guān)鍵字有一定的順序(最大的堆是父節(jié)點的關(guān)鍵字,大于等于子節(jié)點的關(guān)鍵字,最小的堆是父節(jié)點的關(guān)鍵字,小于或等于子節(jié)點的關(guān)鍵字)。對于完全二叉樹,即使節(jié)點有關(guān)鍵字,也不一定滿足排序要求,完全二叉樹必須是完全二叉樹,但完全二叉樹不一定是完全二叉樹。全二叉樹:除最后一層沒有子節(jié)點外,每一層上的所有節(jié)點都有兩個子節(jié)點的二叉樹;全二叉樹:除最后一層外,每一層上的節(jié)點數(shù)達到最大值;最后一層上只缺少右側(cè)的幾個節(jié)點。
為什么說滿二叉樹是完全二叉樹?
區(qū)別在于最后一層。根據(jù)全二叉樹的定義,除最后一層外,每層中的所有節(jié)點都有兩個子節(jié)點。也就是說倒數(shù)第二層的每個節(jié)點都有兩個子節(jié)點,所以最后一層的節(jié)點數(shù)必須是倒數(shù)第二層的兩倍,所以最后一層不缺一個節(jié)點。一個完整的二叉樹的最后一層的節(jié)點數(shù)可以是倒數(shù)第二層的兩倍(一個完整的二叉樹必須是一個完整的二叉樹),也可以是一個或兩個。但是,這些丟失的節(jié)點只能是最右邊的節(jié)點。
完全二叉樹與滿二叉樹的區(qū)別?
完全二叉樹的定義:深度為K和N個節(jié)點的二叉樹稱為完全二叉樹,當且僅當每個節(jié)點對應于深度為K的完全二叉樹中編號為1到N的節(jié)點時。
特征:葉節(jié)點只能出現(xiàn)在層次結(jié)構(gòu)的兩個最大級別上;對于任何節(jié)點,如果其右分支的子代的最大級別為l,則其左分支的子代的最大級別必須為l或l1完全二叉樹:深度為K且冪為2(K)-1的二叉樹節(jié)點特征:每個級別上的節(jié)點數(shù)是最大節(jié)點數(shù)完全二叉樹必須是完全二叉樹。完全二叉樹不一定是完全二叉樹
哈夫曼樹不一定是二叉樹。也可能有M度的哈夫曼樹。M度的哈夫曼樹只有M度的節(jié)點和0度的節(jié)點。
完全二叉樹和滿二叉樹的區(qū)別?
準確地說,應該說一個完整的二叉樹也可以是空的(沒有節(jié)點),二叉排序樹也可以是空的。同樣,完整的二叉樹也可以是空的