一、定義:
若設(shè)二叉樹的深度為k,除第k層外堰塌,其他各層(1~(k-1)層)的節(jié)點(diǎn)數(shù)都達(dá)到最大值谓传,且第k層所有的節(jié)點(diǎn)都連續(xù)集中在最左邊,這樣的樹就是完全二叉樹掌呜。如下圖:
完全二叉樹是一種效率很高的數(shù)據(jù)結(jié)構(gòu)凡人,而堆是一種完全二叉樹或者近似完全二叉樹名党,因此堆的效率也很高;像十分常用的排序算法挠轴、Dijkstra算法传睹、Prim算法等都要用堆才能優(yōu)化,二叉排序樹的效率也要借助平衡性來提高忠荞,而平衡性是基于完全二叉樹的蒋歌。
下圖是非完全二叉樹:
二帅掘、特點(diǎn)
1) 在非空二叉樹中委煤,第k層的結(jié)點(diǎn)總數(shù)不超過2^(k-1),k>=1;
2) 深度為k的二叉樹最多有2k-1個(gè)結(jié)點(diǎn)(k>=1)修档,最少有k個(gè)結(jié)點(diǎn);
3) 對于任意一棵二叉樹碧绞,如果其葉結(jié)點(diǎn)數(shù)為N0,而度數(shù)為2的結(jié)點(diǎn)總數(shù)為N2吱窝,則N0=N2+1;
4) 具有n個(gè)結(jié)點(diǎn)的完全二叉樹的深度為log2(n+1);
5)有n個(gè)結(jié)點(diǎn)的完全二叉樹各結(jié)點(diǎn)如果用順序方式存儲讥邻,則結(jié)點(diǎn)之間有如下關(guān)系:
a、若m為結(jié)點(diǎn)編號則 如果m>1院峡,則其父結(jié)點(diǎn)的編號為m/2兴使;
b、如果2*m<=n照激,則其左兒子(即左子樹的根結(jié)點(diǎn))的編號為2*m发魄;若2*m>n,則無左兒子俩垃;
c励幼、如果2*m+1<=n,則其右兒子的結(jié)點(diǎn)編號為2m+1口柳;若2m+1>n苹粟,則無右兒子。
6)給定n個(gè)節(jié)點(diǎn)跃闹,能構(gòu)成h(n)種不同的二叉樹嵌削,其中h(n)為卡特蘭數(shù)的第n項(xiàng)毛好,h(n)=C(2*n, n)/(n+1)。
7)設(shè)有i個(gè)枝點(diǎn)苛秕,I為所有枝點(diǎn)的道路長度總和睛榄,J為葉的道路長度總和J=I+2i。