青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 51, 文章 - 1, 評論 - 41, 引用 - 0
數(shù)據(jù)加載中……

兩個樹結(jié)構(gòu)的程序

         前幾日從朋友得到幾個關(guān)于樹結(jié)構(gòu)的題目,頗為有趣。
         第一道題目:一個二叉樹,有三種遍歷,前序遍歷,中序遍歷,后序遍歷。已知兩種遍歷的順序,求出第三種順序。如前序abc,中序bac,則后序則是bca。當然知道前序和后序不一定能確定中序的順序。如前序ab,后序則是ba,葉結(jié)點b可能是左葉,也可能是右葉。就有了第二道題目
         第二道題目:如果是一個N叉樹,如果知道前序遍歷,后序遍歷,則這棵樹可能有這種可能的形式。
         
         和樹有關(guān)的算法一般可以用遞歸算法。因為子樹也是一棵樹,和遞歸思想吻合。這兩個程序用到的算法就是遞歸,關(guān)鍵點就是找出子樹的起始位置。程序如下:
/* 得到二叉樹的后序輸出 */
int GetPostOrder(int n, const int* preorder, const int* inorder, int* postorder)
{
    
if (n == 1)
    {
        postorder[
0= preorder[0];
    }
    
else if (n > 1)
    {
        
int i;
        
for (i=0; i<n; i++)
        {
            
if (inorder[i] == preorder[0])
                break;
        }
        
if (i == n) return -1;
        GetPostOrder(i, preorder
+1, inorder, postorder);
        GetPostOrder(n
-1-i, preorder+1+i, inorder+i+1, postorder+i);
        postorder[n
-1= preorder[0];
    }
    return 
0;
}

/* 得到二叉樹的中序輸出,由于不唯一,所以子樹左優(yōu)先 */
int GetInOrder(int n, const int* preorder, int* inorder, const int* postorder)
{
    
if (n == 1)
    {
        inorder[
0= preorder[0];
    }
    
else if (n > 1)
    {
        
int i;
        
for (i=0; i<n; i++)
        {
            
if (preorder[1== postorder[i])
                break;
        }
        
if (i == n) return -1;
        i
++;
        GetInOrder(i, preorder
+1, inorder, postorder);
        inorder[i] 
= preorder[0];        
        GetInOrder(n
-1-i, preorder+1+i, inorder+i+1, postorder+i);
    }
    return 
0;
}

/* 得到二叉樹的前序輸出 */
int GetPreOrder(int n, int* preorder, const int* inorder, const int* postorder)
{
    
if (n == 1)
    {
        preorder[
0= postorder[n-1];
    }
    
else if (n > 1)
    {
        
int i;
        
for (i=0; i<n; i++)
        {
            
if (inorder[i] == postorder[n-1])
                break;
        }
        
if (i == n) return -1;
        preorder[
0= postorder[n-1];
        GetPreOrder(i, preorder
+1, inorder, postorder);
        GetPreOrder(n
-1-i, preorder+1+i, inorder+i+1, postorder+i);
    }
    return 
0;
}

/* 得到N叉樹可能的子樹結(jié)構(gòu)的數(shù)目 */
int PsbInOrder(int tsize, int n, const int* preorder, const int* postorder)
{
    
int ret = 1;
    
if (n > 1)
    {
        
int i, s, size;
        
for (i=0,s=1,size=0; i<n-1; i++)
        {
            
if (preorder[s] == postorder[i])
            {
                ret 
*= PsbInOrder(tsize, i-s+2, preorder+s, postorder+s-1);
                size
++;
                s 
= i+2;
            }
        }
        
        
for (i=0; i<size; i++)
        {
            ret 
= (tsize-i) * ret / (i+1);
        }
    }
    return ret;
}

int main(void)
{
/*
 
* ABFEGCDHN    (前序)
 
* FBEGAHDNC    (中序)
 
* FGEBHNDCA    (后序)
*/
    
int i;
    
int preorder[] = {'A','B','F','E','G','C','D','H','N'};
    int inorder[] = {'F','B','E','G','A','H','D','N','C'};
    int postorder[] = {'F','G','E','B','H','N','D','C','A'};
    int n = sizeof(preorder)/sizeof(int);

/*
 
* abejkcfghid    (前序)
 
* jkebfghicda    (后序)
 
*/    
    
int p1[] = {'a','b','e','j','k','c','f','g','h','i','d'};
    int p2[] = {'j','k','e','b','f','g','h','i','c','d','a'};
    int m = sizeof(p1)/sizeof(int);
    
    GetPostOrder(n, preorder, inorder, postorder);
    
for (i=0; i<sizeof(preorder)/sizeof(int); i++)
        printf(
"%c", (char)postorder[i]);
        
    i 
= PsbInOrder(13, m, p1, p2);
    printf(
"\n%d\n", i);
    return 
0;
}

posted on 2008-03-31 11:59 lemene 閱讀(300) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久久精品国产一区二区三区 | 久久久久久精| 亚洲免费在线视频| 在线视频中文亚洲| 亚洲一级影院| 久久成人精品无人区| 久久亚洲二区| 亚洲国产日韩欧美| 欧美激情一区二区久久久| 亚洲激情一区二区| 亚洲午夜影视影院在线观看| 欧美一区在线直播| 欧美国产精品日韩| 欧美日本不卡| 国产麻豆精品久久一二三| 在线播放不卡| 亚洲一级片在线观看| 久热爱精品视频线路一| 亚洲免费成人av| 欧美在线视频播放| 欧美理论电影在线播放| 国产一区二区电影在线观看| 亚洲日本在线观看| 久久国产一区二区三区| 亚洲日本一区二区三区| 欧美一站二站| 欧美日韩在线三级| 一区二区视频免费在线观看| 亚洲一区二区三区四区在线观看| 久久久视频精品| 99成人在线| 久久网站免费| 国产欧美一区二区白浆黑人| 亚洲毛片网站| 国产欧美一区二区精品婷婷| 亚洲黄色av一区| 久久成人羞羞网站| 亚洲免费观看| 欧美成人有码| 亚洲国产精品久久久久婷婷884| 亚洲破处大片| 久久久久网站| 国产亚洲制服色| 亚洲伊人一本大道中文字幕| 亚洲国产精品久久久久秋霞不卡 | 亚洲人成网站999久久久综合| 亚洲欧美第一页| 欧美三级欧美一级| 99精品国产在热久久下载| 蜜臀91精品一区二区三区| 午夜精品久久久久| 国产精品久久久久三级| 在线视频欧美日韩| 亚洲人成久久| 欧美精品在线一区| 99国产精品国产精品久久 | 久久精品国产第一区二区三区最新章节 | 美女成人午夜| 欧美一区综合| 激情久久综合| 男女激情久久| 久久综合久久综合这里只有精品| 黄色日韩网站| 欧美成人精品不卡视频在线观看| 久久久久久夜| 亚洲国产三级在线| 女女同性精品视频| 欧美成人午夜77777| 亚洲精品女人| 亚洲免费高清| 国产伦精品一区二区三区免费迷| 欧美一区二区在线免费播放| 欧美一区二区视频免费观看| 激情成人亚洲| 亚洲第一精品在线| 欧美交受高潮1| 亚洲一区免费看| 亚洲欧美国产高清| 在线日韩一区二区| 亚洲毛片一区二区| 国产精品外国| 免费在线成人av| 欧美日韩国产探花| 欧美一区二区三区婷婷月色| 久久久xxx| 一区二区免费在线播放| 亚洲免费影视第一页| 在线电影院国产精品| 亚洲深夜av| 亚洲午夜视频| 在线观看福利一区| 9人人澡人人爽人人精品| 国产精品区二区三区日本| 久久蜜桃精品| 欧美日韩精品欧美日韩精品 | 亚洲视频www| 尤物在线精品| 一区二区三区欧美激情| 精品9999| 亚洲欧美国产一区二区三区| 亚洲人成7777| 欧美一区激情| 亚洲在线观看视频| 免费观看亚洲视频大全| 欧美在线1区| 欧美日韩视频在线一区二区观看视频 | 亚洲欧美美女| 欧美成人精品在线播放| 欧美一区中文字幕| 欧美欧美天天天天操| 久久婷婷蜜乳一本欲蜜臀| 欧美三级乱人伦电影| 亚洲国产成人久久| 韩日欧美一区二区| 先锋影音一区二区三区| 亚洲天堂av电影| 欧美成人自拍| 蜜臀久久久99精品久久久久久| 国产精品蜜臀在线观看| 亚洲精品综合| 91久久久精品| 久久免费99精品久久久久久| 久久精品99国产精品| 国产精品婷婷午夜在线观看| 一区二区三区视频观看| 99国内精品久久| 欧美国产综合视频| 欧美大片免费观看| 欲香欲色天天天综合和网| 久久国产精品一区二区| 欧美中在线观看| 国产日韩欧美精品综合| 在线视频精品| 午夜精品福利在线| 国产精品国产三级国产普通话三级| 亚洲激情偷拍| 中文久久精品| 欧美午夜精品理论片a级按摩| 99精品视频免费观看| 亚洲制服丝袜在线| 国产精品免费一区二区三区在线观看| 妖精成人www高清在线观看| 亚洲一区二区三区精品在线观看| 欧美日韩国产一区二区| 99这里只有久久精品视频| 亚洲神马久久| 国产精品资源| 久久久国产一区二区| 亚洲另类视频| 欧美国产在线视频| 一区二区av| 欧美伊人影院| 国产无一区二区| 久久久综合网| 亚洲国内精品在线| 亚洲一线二线三线久久久| 国产精品你懂的在线| 欧美中文字幕第一页| 欧美成人亚洲成人| 日韩视频在线观看| 国产精品九九| 久久久久久久久久久一区| 亚洲国产导航| 午夜亚洲伦理| 亚洲国产二区| 国产精品va| 玖玖综合伊人| 亚洲一区二区三区国产| 免费永久网站黄欧美| 一区二区三区国产精品| 国产一区二区三区四区老人| 欧美aaa级| 性伦欧美刺激片在线观看| 欧美成人一区二区三区片免费| 一本一本大道香蕉久在线精品| 国产日韩欧美视频| 欧美黄色一区二区| 欧美一区二区三区视频在线| 亚洲激情国产| 久久久噜噜噜久久狠狠50岁| 在线亚洲欧美视频| 伊人蜜桃色噜噜激情综合| 国产精品国产馆在线真实露脸 | 亚洲第一精品在线| 欧美一区二视频| 亚洲人久久久| 国内成人精品2018免费看| 欧美日韩国产123| 久久美女艺术照精彩视频福利播放| 亚洲久久在线| 亚洲第一精品夜夜躁人人躁| 久久久综合网| 欧美中文字幕在线观看| 亚洲欧美日本精品| 一本色道久久综合精品竹菊 | 亚洲国产精品一区制服丝袜| 国产精品日韩欧美一区二区三区| 欧美福利网址| 久久午夜视频| 久久久久久久久久久一区|