• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C小加

            厚德 博學(xué) 求真 至善 The bright moon and breeze
            posts - 145, comments - 195, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            基本數(shù)據(jù)結(jié)構(gòu):二叉樹(binary tree)

            作者:C小加  更新時間:2012-8-6

            二叉樹首先是一棵樹,每個節(jié)點都不能有多于兩個的兒子,也就是樹的度不能超過2。二叉樹的兩個兒子分別稱為“左兒子”和“右兒子”,次序不能顛倒。如圖1是一個簡單的二叉樹。

            二叉樹的種類

            一種是滿二叉樹,除了最后一層的葉子節(jié)點外,每一層的節(jié)點都必須有兩個兒子節(jié)點。如圖2是一個滿二叉樹。

            另一種是完全二叉樹,一棵二叉樹去掉最后一層后剩下的節(jié)點組成的樹為滿二叉樹,最后一層的節(jié)點從左到右連續(xù),沒有空出的節(jié)點,這樣的樹稱為完全二叉樹。如圖3是一棵完全二叉樹。

            二叉樹的實現(xiàn)

            因為一棵樹有最多只有兩個兒子,所以我們可以用指針直接指向他們。一個節(jié)點包括值(data)、指向左兒子的指針(lson)和指向右兒子的指針(rson)。

            struct treenode
            {
            int data;
            struct treenode* lson;
            struct treenode* rson;
             
            }

            二叉樹的插入,刪除,查找和鏈表差不多,不同的是需要指定是左兒子還是右兒子。

            二叉樹的數(shù)組實現(xiàn)也很簡單,假如說根節(jié)點在arr[0]這個位置,那么它的左兒子就在arr[2*0+1],也就是arr[1]這個位置,它的右兒子在arr[2*0+2] ,也就是arr[2]這個位置。對于下標為i的節(jié)點來說,它的左兒子的下標為2*i+1,右兒子的下標為2*i+2。

            二叉樹的遍歷

            二叉樹的遍歷有三種,分別為先序遍歷,中序遍歷和后序遍歷。這三種遍歷方式是根據(jù)根節(jié)點的讀取順序來分的:

            先序遍歷,就是最先讀取根節(jié)點,然后再讀取左子樹(按照同樣的方法讀取子樹上的節(jié)點),最后讀取右子樹;

            中序遍歷,就是第二個讀取根節(jié)點,最先要讀取的是左子樹,然后根節(jié)點,最后右子樹;

            后序遍歷,就是最后一個讀取根節(jié)點,最先讀取的是左子樹,第二個讀取右子樹,最后讀取根節(jié)點。

            先序遍歷的遞歸實現(xiàn)代碼:

            void insubtree(struct treenode* tree)
            {
                   If(tree==NULL) return;
                   cout<<tree->data;
                insubtree(tree->lson);
            insubtree(tree->rson);
            }

             

            Feedback

            # re: 基本數(shù)據(jù)結(jié)構(gòu):二叉樹(binary tree)  回復(fù)  更多評論   

            2012-08-06 15:52 by SunRise_at
            支持一下....

            # re: 基本數(shù)據(jù)結(jié)構(gòu):二叉樹(binary tree)  回復(fù)  更多評論   

            2012-08-08 16:56 by zinber
            嗯,頂個先
            亚洲av伊人久久综合密臀性色| 囯产极品美女高潮无套久久久 | 久久笫一福利免费导航 | 久久人人爽人人爽人人片AV东京热 | 精品永久久福利一区二区| Xx性欧美肥妇精品久久久久久| 7777精品久久久大香线蕉| 无码专区久久综合久中文字幕 | 久久人人爽人人爽人人爽| 久久国产香蕉一区精品| 久久香蕉国产线看观看乱码| 久久亚洲AV成人无码国产| 中文无码久久精品| 夜夜亚洲天天久久| 国产精品综合久久第一页| 亚洲精品乱码久久久久久中文字幕 | 亚洲va久久久噜噜噜久久男同| 精品一区二区久久| 久久A级毛片免费观看| 久久精品水蜜桃av综合天堂| 久久强奷乱码老熟女网站| 国产精品久久久福利| 91久久福利国产成人精品| 久久精品国产清高在天天线| 亚洲国产精品一区二区三区久久| 久久精品一区二区三区中文字幕| 亚洲国产精品无码久久久秋霞2| 久久国产V一级毛多内射| 久久精品视频一| 久久久久亚洲AV无码专区网站| av午夜福利一片免费看久久| 无码久久精品国产亚洲Av影片| 亚洲国产婷婷香蕉久久久久久| 国产精品欧美久久久久天天影视| WWW婷婷AV久久久影片| 久久这里只有精品18| 久久精品国产亚洲AV无码麻豆| 久久精品国产亚洲av麻豆蜜芽| 免费无码国产欧美久久18| 国产精品女同久久久久电影院| 亚洲日韩中文无码久久|