11.二叉樹基本理論,11二叉樹基本理論

來源:互聯網
上載者:User

11.二叉樹基本理論,11二叉樹基本理論
一、二叉樹基本概念1.定義    二叉樹(Binary Tree)是n(n>=0)個結點的有限集合,該集合或者為空白集(或稱空二叉樹),或者由一個根節點和兩顆互不相交的、分別稱為根結點的左子樹和右子樹的二叉樹組成。2.二叉樹特點(1)每個結點最多有兩顆子樹,所以二叉樹中不存在度大於2的結點;(2)左子樹和右子樹是有順序的,次序不能任意顛倒;(3)即使樹中某節點只有一顆子樹,也要區分它是左子樹還是右子樹。另外,二叉樹具有五種基本形態:a.空二叉樹;b.只有一個根結點;c.根結點只有左子樹;d.根結點只有右子樹;e.根結點既有左子樹又有右子樹3.特殊的二叉樹(1)斜樹:所有的結點都只有左子樹的二叉樹稱為左斜樹;所有結點都是只有右子樹的二叉樹稱為右斜樹。特點:每一層都只有一個結點,結點的個數與二叉樹的深度相同。(2)滿二叉樹:在一顆二叉樹中,如果所有分支結點都存在左子樹和右子樹,並且所有葉子都在同一層上,這樣的二叉樹稱為滿二叉樹。    滿二叉樹特點:a)所有的葉子只能出現在最下一層且處於同一層;                                b)非葉子結點的度一定是2;                                c)在同樣深度的二叉樹中,滿二叉樹的結點個數最多,葉子數最多。(3)完全二叉樹:對一顆具有n個結點的二叉樹按層序編號,如果編號為i(1=<i<=n)的結點與同樣深度的滿二叉樹編號為i的結點在二叉樹中位置完全相同,則這顆二叉樹稱為完全二叉樹。    完全二叉樹特點:a)葉子結點只能出現在最下兩層;                                    b)最下層的葉子一定出現在左部連續位置;                                    c)倒數二層,若有葉子結點,一定都在右部連續位置;                                    d)如果結點度為1,則該結點只有左孩子,即不存在只有右子樹的情況;                                    e)同樣結點數的二叉樹,完全二叉樹的深度最小。            總之:滿二叉樹一定是一顆完全二叉樹,但完全二叉樹不一定是滿的。在判別是否為二叉樹時,我們只需給每個結點按照滿二叉樹的結構逐層順序編號,如果編號出現了空檔,就說明該樹不是完全二叉樹,都在就是。
二、二叉樹的性質1.性質1:在二叉樹的第i層上至多有2^(i-1)個結點(i>=1).    分析:計算二叉樹某一層的結點數。這裡的"至多"指的是,當該二叉樹為滿二叉樹時,由數學歸納法論證可知,第i層有最多可以有2^(i-1)個結點。2.性質2:深度為k的二叉樹至多有2^k-1個結點(k>=1)    分析:計算二叉樹結點總數。這裡"深度為k"指有k層的二叉樹,當該二叉樹為滿二叉樹時,由數學歸納法論證可知,該二叉樹至多有2^k-1個結點。3.性質3:對任何一顆二叉樹T,如果其終端結點數為n0,度為2的結點數為n2,則no=n2+1.   分析:一顆二叉樹主要有n0個度為0的葉子結點、n1個度為1的結點、n2個度為2的結點組成。因此,該二叉樹的結點總數n=n0+n1+n2(方程1).從二叉樹中連接線數可知,由於根結點只有分支出去,沒有分支進入,所有分支線總數減去1,即二叉樹分支線總數=n-1=n1+2n2(方程2)(其中n1為度為1的結點數、n2為度為2的結點數)。聯立方程得:n0=n2+1.4.性質4:具有n個結點的完全二叉樹的深度為「log2^n」+1 (「x」表示不大於x的最大整數)。    分析:由性質2我們可以知道,深度為k的滿二叉樹的結點數n=2^k-1。由其反向推算得到滿二叉樹的度數為k=log2^(n+1)。由於完全二叉樹是滿二叉樹的一個子集,它的結點數一定少於等於同樣度數的滿二叉樹的結點數2^k-1,但一定多於2^(k-1)-1。即滿足2^(k-1)-1<n<2^k-1.    由於結點數n是整數,n<2^k-1=<2^k且n>2^(k-1)-1>=2^(k-1),所以2^(k-1)<n<2^k,再不等式兩邊取對數,得到k-1=<log2^n<k,而k作為度數也是整數,因此k=「log2^n」+1.5.性質5:如果對一顆有n個結點的完全二叉樹(其深度為「log2^n」+1)的結點按層序編號(從第1層到第「log2^n」+1層,每層從左至右),對任一結點i(1=<i<=n)有:
    (1)如果i=1,則結點是i的二叉樹的根,無雙親;如果i<1,則其雙親是結點[i/2];    (2)如果2i>n,則結點i無左孩子(結點i為葉子結點);否則其左孩子是結點2i;    (3)如果2i+1>n,則結點i無右孩子;否則其右孩子是結點2i+1.三、二叉樹的儲存結構1.二叉樹順序儲存結構    由於二叉樹是一種特殊的樹,使得順序儲存結構得以實現。二叉樹的順序儲存結構就是用一維數組儲存二叉樹中的結點,並且結點的儲存位置,也就是數組的下標要能體現結點之間的邏輯關係,比如雙親與孩子的關係,左右兄弟的關係等。(k個結點,需要分配2^k-1個儲存單元空間)注意:順序儲存結構一般只用於完全二叉樹。    2.二叉鏈表(1)核心思想    二叉樹每個結點最多有兩個孩子,所有為它設計一個資料域和兩個指標域,用來指向該結點的左右孩子,我們稱為這樣的鏈表為二叉鏈表。(2)結點結構
其中,data為資料域,lchild和rchild都是指標域,分別存放指向左右孩子的指標(3)二叉鏈表的結點結構定義代碼/*二叉樹的二叉鏈表結點結構定義*/typedef struct BiTNode    /*結點結構*/{    TElemtype data;    //結點資料    struct BiTNode *lchild,*rchild;//左右孩子指標} BiTNode,*BiTree;(4)結構執行個體>>二叉鏈表    >>三叉鏈表:parent指標域存放指向結點雙親的指標 


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.