• <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>
            posts - 100,  comments - 15,  trackbacks - 0
            輸入二叉樹先序,建樹,然后中序線索化,遍歷輸出
              1#include<iostream>
              2using namespace std;
              3
              4enum PointerTag
              5
              6    Link,Thread        //枚舉值Link和Thread分別為0,1
              7}

              8
              9struct BiThrNode    //線索二叉樹的結點類型
             10{
             11    char data;
             12    PointerTag LTag;    //左標志
             13    PointerTag RTag;    //右標志
             14    BiThrNode *lchild;    //左孩子指針
             15    BiThrNode *rchild;    //右孩子指針
             16}
            ;
             17
             18typedef BiThrNode* BiThrTree;
             19BiThrNode *pre=NULL; //全局量
             20
             21void InOrderThreading(BiThrTree & Thrt,BiThrTree T);//線索化
             22void InThreading(BiThrTree p);//中序遍歷線索化
             23bool PreOrderCreatBiTree(BiThrTree &T);//先序建立樹
             24void InOrderTraverse_Thr(BiThrTree T);//中序遍歷線索樹
             25
             26int main()
             27{
             28    BiThrTree T,Thrt;
             29    printf("輸入先序序列('#'表示空節點)建立二叉樹:\n");
             30    PreOrderCreatBiTree(T);//先序建立樹
             31    InOrderThreading(Thrt,T);//中序線索化
             32    printf("中序線索化,中序遍歷得中綴式:\n");
             33    InOrderTraverse_Thr(Thrt);//中序遍歷線索樹
             34    printf("\n");
             35    return 0;
             36}

             37
             38void InOrderThreading(BiThrTree & Thrt,BiThrTree T)
             39{
             40    Thrt=new BiThrNode;
             41    Thrt->LTag=Link;
             42    Thrt->RTag=Thread;
             43    Thrt->rchild=Thrt;
             44    if(!T) Thrt->lchild=Thrt;
             45    else{
             46        Thrt->lchild=T;
             47        pre=Thrt;
             48        InThreading(T);
             49        pre->rchild=Thrt;
             50        pre->RTag=Thread;
             51        Thrt->rchild=pre;
             52    }

             53}

             54
             55void InThreading(BiThrTree p)
             56{
             57    if(p)
             58    {
             59        InThreading(p->lchild);
             60        if(!p->lchild){ p->LTag=Thread; p->lchild=pre;}
             61        if(!pre->rchild){ pre->RTag=Thread; pre->rchild=p; }
             62        pre=p;
             63        InThreading(p->rchild);
             64    }

             65}

             66
             67bool PreOrderCreatBiTree(BiThrTree &T)
             68{//該節點非空返回true,雙親節點對應標志Link,空時返回false,雙親節點對應標志應為Thread
             69    char ch;
             70    scanf("%c",&ch);
             71    if(ch=='#')
             72    {
             73        T=NULL;
             74        return false;
             75    }
            else {
             76        T=new BiThrNode;
             77        T->data=ch;
             78        if(PreOrderCreatBiTree(T->lchild)) T->LTag=Link;    //左孩子存在則左標志為Link
             79        else T->LTag=Thread;
             80        if(PreOrderCreatBiTree(T->rchild)) T->RTag=Link;    //右孩子存在則右標志為Link
             81        else T->RTag=Thread;
             82    }

             83    return true;
             84}

             85
             86
             87void InOrderTraverse_Thr(BiThrTree T)
             88{
             89    BiThrNode *p;
             90    p=T->lchild;
             91    while(p!=T)
             92    {
             93        while(p->LTag==Link) p=p->lchild;
             94        printf("%c",p->data);
             95        while(p->RTag==Thread && p->rchild!=T) //if(p->RTag==Thread && p->rchild!=T)
             96        {
             97            p=p->rchild;
             98            printf("%c",p->data);
             99        }

            100        p=p->rchild;
            101    }

            102}
            posted on 2009-05-13 17:00 wyiu 閱讀(626) 評論(0)  編輯 收藏 引用 所屬分類: 數據結構
            色成年激情久久综合| 亚洲欧美另类日本久久国产真实乱对白 | 久久久精品国产免大香伊| 久久人妻少妇嫩草AV蜜桃| 久久亚洲AV成人出白浆无码国产| 91精品国产综合久久精品| 日韩十八禁一区二区久久| 欧美熟妇另类久久久久久不卡| 国产日韩久久免费影院| 欧美精品九九99久久在观看| 九九久久自然熟的香蕉图片| 精品久久人人爽天天玩人人妻 | 久久国产影院| 精品熟女少妇av免费久久| 三级韩国一区久久二区综合| 18岁日韩内射颜射午夜久久成人| 免费无码国产欧美久久18| 亚洲成色999久久网站| 午夜人妻久久久久久久久| 亚洲国产日韩欧美久久| 国内精品久久久久久久coent| 久久精品国产亚洲精品2020| 久久精品国产亚洲AV香蕉| 无码任你躁久久久久久| 久久综合狠狠综合久久激情 | 国产一久久香蕉国产线看观看| 亚洲va中文字幕无码久久不卡| 久久这里的只有是精品23| 久久精品国产亚洲Aⅴ香蕉| 国内精品久久久久久久涩爱| 国产欧美久久一区二区| 国产精品久久久久久福利漫画| 久久精品无码专区免费青青| 亚洲色大成网站www久久九| 亚洲一级Av无码毛片久久精品| 婷婷久久综合九色综合九七| 一级做a爰片久久毛片毛片| 99久久国产亚洲综合精品| 久久笫一福利免费导航| 久久人人爽人人爽人人片AV高清| 97视频久久久|