最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++非遞歸建立二叉樹(shù)實(shí)例

 更新時(shí)間:2015年04月20日 11:27:53   作者:司青  
這篇文章主要介紹了C++非遞歸建立二叉樹(shù)的方法,實(shí)例分析了二叉樹(shù)的原理與C++實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了C++非遞歸建立二叉樹(shù)的方法。分享給大家供大家參考。具體分析如下:

思路:

設(shè)置一個(gè)標(biāo)記變量flag并初始化為1. flag = 1表示現(xiàn)在需要?jiǎng)?chuàng)建當(dāng)前結(jié)點(diǎn)的左孩子,2表示需要?jiǎng)?chuàng)建右孩子,3則表示當(dāng)前結(jié)點(diǎn)的左右孩子都已經(jīng)創(chuàng)建完畢,需要執(zhí)行出棧操作,直到當(dāng)前結(jié)點(diǎn)不是父結(jié)點(diǎn)的右孩子為止。

以先序創(chuàng)建如圖所示二杈樹(shù):

實(shí)現(xiàn)代碼:

PBTree create()
{
 char ch[20];
 scanf("%s",ch);
 int len = strlen(ch);
 PBTree stack[20];
 /* 用來(lái)存儲(chǔ)結(jié)點(diǎn)地址的棧 */ 
 int top = 0;
 /* 棧頂指針 */
 int flag = 1;
 /* 1表示現(xiàn)在需要?jiǎng)?chuàng)建左孩子,
 2表示需要?jiǎng)?chuàng)建右孩子,
 3表示左右孩子都已經(jīng)創(chuàng)建完成 */
 int i = 0;
 PBTree temp;
 PBTree root = (PBTree)malloc(sizeof(BTree));
 root->data = ch[i++];
 root->lchild = NULL;
 root->rchild = NULL;
 stack[top ++] = root;
 while(i < len)
 {
  PBTree pNew = NULL;
  if(1 == flag) /* 創(chuàng)建左孩子 */
  {
   if('#' == ch[i])
    flag = 2;
   else
   {
    pNew = (PBTree)malloc(sizeof(BTree));
    pNew->lchild = NULL;
    pNew->rchild = NULL;
    pNew->data = ch[i];
    temp = stack[top - 1];
    temp->lchild = pNew;
    stack[top++] = pNew;
    flag = 1;
   }
  }
  else if(2 == flag)
  /* 創(chuàng)建右孩子 */
  {
   if('#' == ch[i])
    flag = 3;
   else
   {
    pNew = (PBTree)malloc(sizeof(BTree));
    pNew->lchild = NULL;
    pNew->rchild = NULL;
    pNew->data = ch[i];
    temp = stack[top - 1];
    temp->rchild = pNew;
    stack[top++] = pNew;
    flag = 1;
   }
  }
  else
  /* 左右孩子已經(jīng)創(chuàng)建完成,需要出棧*/
  {
   temp = stack[--top];
   while(top > 1 && stack[top - 1]->rchild == temp)
    --top;
   flag = 2;
   --i;
  }
  ++i;
 }
 return root;
}

希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C++實(shí)現(xiàn)猜數(shù)小游戲的實(shí)現(xiàn)

    C++實(shí)現(xiàn)猜數(shù)小游戲的實(shí)現(xiàn)

    這篇文章主要介紹了C++實(shí)現(xiàn)猜數(shù)小游戲的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • c++中臨時(shí)變量不能作為非const的引用參數(shù)的方法

    c++中臨時(shí)變量不能作為非const的引用參數(shù)的方法

    下面小編就為大家?guī)?lái)一篇c++中臨時(shí)變量不能作為非const的引用參數(shù)的方法。小編覺(jué)得挺不錯(cuò)的現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • C++繼承詳細(xì)介紹

    C++繼承詳細(xì)介紹

    我們都知道面向?qū)ο笳Z(yǔ)言的三大特點(diǎn)是:**封裝,繼承,多態(tài)。**之前在類(lèi)和對(duì)象部分,我們提到了C++中的封裝,那么今天呢,我們來(lái)學(xué)習(xí)一下C++中的繼承
    2022-10-10
  • C語(yǔ)言實(shí)現(xiàn)影院售票管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)影院售票管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)影院售票管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Inline Hook(ring3)的簡(jiǎn)單C++實(shí)現(xiàn)方法

    Inline Hook(ring3)的簡(jiǎn)單C++實(shí)現(xiàn)方法

    這篇文章主要介紹了Inline Hook(ring3)的簡(jiǎn)單C++實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-08-08
  • visualstudio2022工程重命名的圖文步驟

    visualstudio2022工程重命名的圖文步驟

    很多時(shí)候需要用到項(xiàng)目重命名,本文主要介紹了visualstudio2022工程重命名的圖文步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • C/C++仿華容道小游戲

    C/C++仿華容道小游戲

    這篇文章主要介紹了C/C++仿華容道小游戲的相關(guān)資料,模仿實(shí)現(xiàn)華容道游戲,感興趣的朋友可以參考一下
    2016-02-02
  • C++利用多態(tài)實(shí)現(xiàn)職工管理系統(tǒng)(項(xiàng)目開(kāi)發(fā))

    C++利用多態(tài)實(shí)現(xiàn)職工管理系統(tǒng)(項(xiàng)目開(kāi)發(fā))

    這篇文章主要介紹了C++利用多態(tài)實(shí)現(xiàn)職工管理系統(tǒng)(項(xiàng)目開(kāi)發(fā)),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • C++11 lambda表達(dá)式在回調(diào)函數(shù)中的使用方式

    C++11 lambda表達(dá)式在回調(diào)函數(shù)中的使用方式

    這篇文章主要介紹了C++11 lambda表達(dá)式在回調(diào)函數(shù)中的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++使用easyX庫(kù)實(shí)現(xiàn)三星環(huán)繞效果流程詳解

    C++使用easyX庫(kù)實(shí)現(xiàn)三星環(huán)繞效果流程詳解

    EasyX是針對(duì)C/C++的圖形庫(kù),可以幫助使用C/C++語(yǔ)言的程序員快速上手圖形和游戲編程。這篇文章主要介紹了C++使用easyX庫(kù)實(shí)現(xiàn)三星環(huán)繞效果,需要的可以參考一下
    2022-10-10

最新評(píng)論

昆山市| 涿鹿县| 招远市| 广丰县| 阳东县| 卢龙县| 濮阳县| 那曲县| 阿克苏市| 永嘉县| 泰州市| 贵南县| 兴和县| 英吉沙县| 鹤岗市| 玛曲县| 白水县| 右玉县| 汨罗市| 吉安县| 盐城市| 建德市| 平山县| 康平县| 丰台区| 宝兴县| 驻马店市| 扎鲁特旗| 红桥区| 大厂| 厦门市| 分宜县| 南充市| 株洲县| 肥乡县| 盘锦市| 措美县| 礼泉县| 娄底市| 濉溪县| 辽阳市|