完全二叉樹的定義、性質(zhì)以及算法見正文。這里補(bǔ)充一點(diǎn):完全二叉樹是效率很高的數(shù)據(jù)結(jié)構(gòu),堆是一種完全二叉樹或者近似完全二叉樹,所以效率極高,像十分常用的排序算法、Dijkstra算法、Prim算法等都要用堆才能優(yōu)化,幾乎每次都要考到的二叉排序樹的效率也要借助平衡性來提高,而平衡性基于完全二叉樹。
中文名稱 | 完全二叉樹 | 外文名稱 | Complete Binary Tree |
---|---|---|---|
日語 | 完全2分木 | 德語 | Komplett - baum |
完全二叉樹定義
完全二叉樹(Complete Binary Tree)
若設(shè)二叉樹的深度為h,除第 h 層外,其它各層 (1~h-1) 的結(jié)點(diǎn)數(shù)都達(dá)到最大個(gè)數(shù),第 h 層所有的結(jié)點(diǎn)都連續(xù)集中在最左邊,這就是完全二叉樹。
完全二叉樹是由滿二叉樹而引出來的。對(duì)于深度為K的,有n個(gè)結(jié)點(diǎn)的二叉樹,當(dāng)且僅當(dāng)其每一個(gè)結(jié)點(diǎn)都與深度為K的滿二叉樹中編號(hào)從1至n的結(jié)點(diǎn)一一對(duì)應(yīng)時(shí)稱之為完全二叉樹。
一棵二叉樹至多只有最下面的一層上的結(jié)點(diǎn)的度數(shù)可以小于2,并且最下層上的結(jié)點(diǎn)都集中在該層最左邊的若干位置上,則此二叉樹成為完全二叉樹。
如果一棵具有n個(gè)結(jié)點(diǎn)的深度為k的二叉樹,它的每一個(gè)結(jié)點(diǎn)都與深度為k的滿二叉樹中編號(hào)為1~n的結(jié)點(diǎn)一一對(duì)應(yīng),這棵二叉樹稱為完全二叉樹。
可以根據(jù)公式進(jìn)行推導(dǎo),假設(shè)n0是度為0的結(jié)點(diǎn)總數(shù)(即葉子結(jié)點(diǎn)數(shù)),n1是度為1的結(jié)點(diǎn)總數(shù),n2是度為2的結(jié)點(diǎn)總數(shù),則 ①n= n0+n1+n2 (其中n為完全二叉樹的結(jié)點(diǎn)總數(shù));又因?yàn)橐粋€(gè)度為2的結(jié)點(diǎn)會(huì)有2個(gè)子結(jié)點(diǎn),一個(gè)度為1的結(jié)點(diǎn)會(huì)有1個(gè)子結(jié)點(diǎn),除根結(jié)點(diǎn)外其他結(jié)點(diǎn)都有父結(jié)點(diǎn),所以②n= 1+n1+2*n2 ;由①、②兩式把n2消去得:n= 2*n0+n1-1,由于完全二叉樹中度為1的結(jié)點(diǎn)數(shù)只有兩種可能0或1,由此得到n0=n/2 或 n0=(n+1)/2。
簡便來算,就是 n0=n/2,其中n為奇數(shù)時(shí)(n1=0)向上取整;n為偶數(shù)時(shí)(n1=1)。可根據(jù)完全二叉樹的結(jié)點(diǎn)總數(shù)計(jì)算出葉子結(jié)點(diǎn)數(shù)。
完全二叉樹:葉節(jié)點(diǎn)只能出現(xiàn)在最下層和次下層,并且最下面一層的結(jié)點(diǎn)都集中在該層最左邊的若干位置的二叉樹
二叉樹在計(jì)算機(jī)科學(xué)中,二叉樹是每個(gè)結(jié)點(diǎn)最多有兩個(gè)子樹的有序樹。通常子樹的根被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。二叉樹常被用作二叉查找樹和二叉堆。二叉...
因?yàn)槿~子節(jié)點(diǎn)與度為2的結(jié)點(diǎn)的關(guān)系是:n0=n2+1;因?yàn)? n0=3,所以 n2=2;總的結(jié)點(diǎn)數(shù):n=n0+n1+n2=3+8+2=13希望能幫助你
安裝算量中圖紙的燈頭盒有一叉、二叉、三叉和四叉的能分開識(shí)別出數(shù)量嗎?
燈頭盒 不分幾個(gè)叉的,統(tǒng)一按燈頭盒計(jì)算,有多少燈具就按多少燈頭盒。分叉是現(xiàn)場(chǎng)施工過程中連接管道的根數(shù),不影響燈頭盒工程量的計(jì)算
葉子結(jié)點(diǎn)只可能在最大的兩層上出現(xiàn),對(duì)任意結(jié)點(diǎn),若其右分支下的子孫最大層次為L,則其左分支下的子孫的最大層次必為L 或 L+1;
出于簡便起見,完全二叉樹通常采用數(shù)組而不是鏈表存儲(chǔ),其存儲(chǔ)結(jié)構(gòu)如下:
var tree:array[1..n]of longint;{n:integer;n>=1}
對(duì)于tree[i],有如下特點(diǎn):
(1)若i為奇數(shù)且i>1,那么tree的左兄弟為tree[i-1];
(2)若i為偶數(shù)且i<n,那么tree的右兄弟為tree[i+1];
(3)若i>1,tree的父親節(jié)點(diǎn)為tree[i div 2];
(4)若2*i<=n,那么tree的左孩子為tree[2*i];若2*i+1<=n,那么tree的右孩子為tree[2*i+1];
(5)若i>n div 2,那么tree[i]為葉子結(jié)點(diǎn)(對(duì)應(yīng)于(3));
(6)若i<(n-1) div 2.那么tree[i]必有兩個(gè)孩子(對(duì)應(yīng)于(4))。
(7)滿二叉樹一定是完全二叉樹,完全二叉樹不一定是滿二叉樹。
完全二叉樹第i層至多有2^(i-1)個(gè)節(jié)點(diǎn),共i層的完全二叉樹最多有2^i-1個(gè)節(jié)點(diǎn)。
完全二叉樹的特點(diǎn)是:
1)只允許最后一層有空缺結(jié)點(diǎn)且空缺在右邊,即葉子結(jié)點(diǎn)只能在層次最大的兩層上出現(xiàn);
2)對(duì)任一結(jié)點(diǎn),如果其右子樹的深度為j,則其左子樹的深度必為j或j+1。 即度為1的點(diǎn)只有1個(gè)或0個(gè)
格式:pdf
大?。?span id="l7uuno2" class="single-tag-height">71KB
頁數(shù): 4頁
評(píng)分: 4.8
分層模式在軟件開發(fā)中有著廣泛的應(yīng)用,必然使各層之間產(chǎn)生頻繁的數(shù)據(jù)交互,從而導(dǎo)致軟件性能大大下降。針對(duì)上述問題,本文提出一種基于有序二叉樹的變量池的解決方案,軟件的配置信息以及各層之間的交互數(shù)據(jù)保存在變量池中,對(duì)變量的所有操作都基于變量池,通過變量池的使用,既方便了各層之間數(shù)據(jù)交互,也簡化了各層之間的接口設(shè)計(jì)?;谠摲桨?本文最后實(shí)現(xiàn)了一個(gè)銀行自助終端系統(tǒng)。
格式:pdf
大?。?span id="26sbryt" class="single-tag-height">71KB
頁數(shù): 3頁
評(píng)分: 4.6
房地產(chǎn)是我國國民經(jīng)濟(jì)的支柱產(chǎn)業(yè),傳統(tǒng)的凈現(xiàn)值貼現(xiàn)方法不再適合于評(píng)估房地產(chǎn)項(xiàng)目的價(jià)值。本文將實(shí)物期權(quán)定價(jià)的二叉樹方法運(yùn)用于房地產(chǎn)項(xiàng)目投資決策,通過對(duì)案例的解析來說明該方法較傳統(tǒng)的凈現(xiàn)值貼現(xiàn)方法更適合于房地產(chǎn)項(xiàng)目投資決策。
大家都知道完全二叉樹的總結(jié)點(diǎn)數(shù)是: 2^h-1,而均衡二叉樹是完全二叉樹再加上幾個(gè)葉結(jié)點(diǎn),所以它的總結(jié)點(diǎn)數(shù)就是:2^(h-1)-1+m,其中h是樹的深度,m是第h層葉結(jié)點(diǎn)個(gè)數(shù)。
下面我們來討論左偏樹的距離和節(jié)點(diǎn)數(shù)的關(guān)系。
[引理1] 若左偏樹的距離為一定值,則節(jié)點(diǎn)數(shù)最少的左偏樹是完全二叉樹。
證明:由性質(zhì)2可知,當(dāng)且僅當(dāng)對(duì)于一棵左偏樹中的每個(gè)節(jié)點(diǎn)i,都有dist(left(i)) =dist(right(i)) 時(shí),該左偏樹的節(jié)點(diǎn)數(shù)最少。顯然具有這樣性質(zhì)的二叉樹是完全二叉樹。
[定理1] 若一棵左偏樹的距離為k,則這棵左偏樹至少有2^(k+1)-1個(gè)節(jié)點(diǎn)。
證明:由引理1可知,當(dāng)這樣的左偏樹節(jié)點(diǎn)數(shù)最少的時(shí)候,是一棵完全二叉樹。距離為k的完全二叉樹高度也為k,節(jié)點(diǎn)數(shù)為2^(k+1)-1,所以距離為k的左偏樹至少有2^(k+1)-1個(gè)節(jié)點(diǎn)。
作為定理1的推論,我們有:
[性質(zhì)4] 一棵N個(gè)節(jié)點(diǎn)的左偏樹距離最多為?log(N+1)?-1。
證明:設(shè)一棵N個(gè)節(jié)點(diǎn)的左偏樹距離為k,由定理1可知,N ≥ 2^(k+1)-1,因此k ≤ ?log(N+1)?-1。
標(biāo)程
《數(shù)字序列》程序
1
/ \
2 3
\ /
4 5 是均衡二叉樹,因?yàn)樗サ羧~結(jié)點(diǎn)及相應(yīng)的樹枝后,
變成了:
1
/ \
2 3 ,這是一個(gè)二叉樹。
1
/ \
2 3
而 \ / \ 則不是,因?yàn)樗サ羧~結(jié)點(diǎn)及相應(yīng)的樹枝后,
4 5 6
/
7
變成了:
1
/ \
2 3
\
4
很顯然,這并不是一個(gè)完全二叉樹。