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

隨筆 - 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>
            亚洲视频精选| 久久影音先锋| 欧美日韩在线观看一区二区| 久久人人97超碰精品888| 国产乱码精品一区二区三| 一区二区高清在线| 久久国产毛片| 一本久久青青| 新67194成人永久网站| 国内精品一区二区| 久久综合给合久久狠狠色| 久久综合999| 猫咪成人在线观看| 亚洲天堂久久| 欧美va天堂在线| 午夜视频一区二区| 亚洲人成在线观看网站高清| 国产精品日本精品| 欧美黄色免费| 亚洲性感美女99在线| 亚洲一区二区在线播放| 亚洲国产二区| 欧美裸体一区二区三区| 亚洲一区日韩在线| 久久野战av| 亚洲欧美另类中文字幕| 日韩视频二区| 亚洲国产va精品久久久不卡综合| 免费观看成人www动漫视频| 亚洲色图自拍| 久久女同精品一区二区| 亚洲毛片播放| 亚洲欧洲在线一区| 欧美激情片在线观看| 欧美中文日韩| 久久国产毛片| 亚洲精品日本| 久久综合亚州| 国产亚洲成精品久久| 国产精品美女www爽爽爽| 欧美日韩三区四区| 亚洲电影第1页| 在线播放亚洲| 亚洲黄色尤物视频| 亚洲久久一区二区| 亚洲欧洲综合另类| 久久久99国产精品免费| 久久视频一区| 欧美电影美腿模特1979在线看| 老色鬼久久亚洲一区二区| 久久人人97超碰精品888| 99www免费人成精品| 亚洲另类视频| 欧美88av| 国产精品久久久久aaaa九色| 国产精品99免费看 | 久久久久国产精品一区二区| 免费成人高清| 宅男精品视频| 亚洲欧美精品| 国产精品国产三级国产a| 日韩小视频在线观看专区| 一本大道久久a久久精品综合| 亚洲精选国产| 亚洲人成网在线播放| av成人免费在线观看| 欧美精品尤物在线| 99亚洲一区二区| 亚洲乱码日产精品bd| 欧美视频在线免费| 一区二区三区在线看| 一区二区三区在线观看国产| 久久成人这里只有精品| 欧美在线日韩在线| 麻豆精品视频| 亚洲高清免费| 欧美亚洲一区二区在线观看| 亚洲欧美日韩精品久久| 久久九九久精品国产免费直播| 久久久精品国产免费观看同学| 国产字幕视频一区二区| 久久免费视频网| 美女福利精品视频| 一本久久精品一区二区| 亚洲免费中文| 最新高清无码专区| 一本色道久久88精品综合| 国产精品亚洲аv天堂网| 麻豆成人综合网| 欧美日韩亚洲高清| 久久久久亚洲综合| 欧美激情四色 | 老司机精品久久| 男人插女人欧美| 亚洲综合精品| 亚洲日韩成人| 国产精品久久国产精品99gif| 欧美在线91| 亚洲图片在线观看| 一区久久精品| 一区二区三区欧美日韩| 黄色在线一区| 中文久久乱码一区二区| 影音先锋在线一区| 亚洲天堂第二页| 亚洲看片网站| 久久久久久亚洲精品不卡4k岛国| 国产精品美女久久久久久2018| 久久久伊人欧美| 国产精品久久久久久久久久尿 | 好吊成人免视频| 欧美中文字幕在线视频| 午夜精品久久久久久久99黑人| 亚洲日本va午夜在线电影| 国产欧美日韩一区| 亚洲一区亚洲| 久久亚洲午夜电影| 欧美专区日韩视频| 欧美日韩亚洲综合一区| 欧美黄污视频| 亚洲国产欧美在线人成| 欧美中文字幕不卡| 久久国产毛片| 国产精品综合| 亚洲一区在线观看免费观看电影高清 | 国产精品每日更新| 亚洲国产成人porn| 极品少妇一区二区| 亚洲图片自拍偷拍| 亚洲一区二区三区激情| 一区二区三区国产精华| 1000部精品久久久久久久久| 午夜亚洲伦理| 亚洲国产高清高潮精品美女| 亚洲欧美日韩中文视频| 校园激情久久| 国产日韩精品在线观看| 99热免费精品在线观看| 亚洲视频综合在线| 欧美天堂亚洲电影院在线播放| 亚洲麻豆视频| 亚洲午夜久久久久久久久电影院| 欧美精品自拍| 亚洲久久一区| 亚洲欧美激情在线视频| 欧美在线视频全部完| 久久av在线| 国产在线观看一区| 久久成人精品无人区| 亚洲日本激情| 欧美一级视频| 日韩一区二区久久| 欧美精品久久一区二区| 最新精品在线| 欧美夜福利tv在线| 国外成人在线视频| 玖玖玖国产精品| 亚洲三级影院| 久久国内精品自在自线400部| 有坂深雪在线一区| 欧美伦理91i| 欧美在线视频在线播放完整版免费观看| 美日韩丰满少妇在线观看| 一道本一区二区| 韩日午夜在线资源一区二区| 欧美精选在线| 久久久久女教师免费一区| 亚洲精选在线观看| 久久久精品久久久久| 亚洲国产女人aaa毛片在线| 欧美丝袜一区二区三区| 久久精品夜色噜噜亚洲aⅴ | 欧美中文在线免费| 91久久极品少妇xxxxⅹ软件| 亚洲欧美日韩天堂一区二区| 极品少妇一区二区三区精品视频| 欧美韩日精品| 欧美一区二区三区免费观看| 夜夜夜精品看看| 欧美夜福利tv在线| 亚洲电影在线免费观看| 欧美午夜性色大片在线观看| 久久久美女艺术照精彩视频福利播放| 亚洲经典在线| 老鸭窝91久久精品色噜噜导演| 亚洲特级片在线| 91久久久久久久久久久久久| 国产日韩一区二区三区| 欧美日韩亚洲成人| 欧美a级在线| 欧美一区二区三区视频在线观看 | 国产精品女主播| 欧美成人免费播放| 久久久久久久久久久成人| 日韩视频免费观看高清完整版| 国产亚洲福利| 久久久久国产一区二区| 亚洲天堂av在线免费| 99re6这里只有精品视频在线观看| 亚洲国产成人av在线 |