C++中序線索化二叉樹

來源:互聯網
上載者:User

標籤:

  1 #include <iostream>  2 using namespace std;  3   4 typedef struct TBTNode  5 {  6     char data;  7     int ltag,rtag;  8     struct TBTNode * lchild;  9     struct TBTNode * rchild; 10 }TBTNode; 11  12 TBTNode * initTBTNode() 13 { 14     TBTNode * p=(TBTNode*)malloc(sizeof(TBTNode)); 15     p->lchild=0; 16     p->rchild=0; 17     p->ltag=0; 18     p->rtag=0; 19     return p; 20 } 21  22 TBTNode * initTBTree(TBTNode * p) 23 { 24     TBTNode * A=initTBTNode(); 25     TBTNode * B=initTBTNode(); 26     TBTNode * C=initTBTNode(); 27     TBTNode * D=initTBTNode(); 28     TBTNode * E=initTBTNode(); 29  30     A->data=‘A‘; 31     B->data=‘B‘; 32     C->data=‘C‘; 33     D->data=‘D‘; 34     E->data=‘E‘; 35  36     A->lchild=B; 37     A->rchild=C; 38     B->rchild=D; 39     C->lchild=E; 40  41     p=A; 42  43     return p; 44 } 45  46 void InThread(TBTNode *p,TBTNode *&pre) 47 { 48     if(p!=0) 49     { 50         InThread(p->lchild,pre); 51         if(p->lchild==0) 52         { 53             p->lchild=pre; 54             p->ltag=1; 55         } 56         if(pre!=0&&pre->rchild==0) 57         { 58             pre->rchild=p; 59             pre->rtag=1; 60         } 61         pre=p; 62         InThread(p->rchild,pre); 63     } 64 } 65  66 TBTNode * First(TBTNode * p) 67 { 68     while(p->ltag==0) 69         p=p->lchild; 70     return p; 71 } 72  73 TBTNode * Next(TBTNode * p) 74 { 75     if(p->rtag==0) 76         return First(p->rchild); 77     else 78         return p->rchild; 79 } 80  81 void Inorder(TBTNode * root) 82 { 83     for(TBTNode *p=First(root);p!=0;p=Next(p)) 84         cout << p->data << " "; 85     cout << endl; 86 } 87  88 void createInThread(TBTNode * root) 89 { 90     TBTNode * pre =initTBTNode(); 91     if(root!=0) 92     { 93         InThread(root,pre); 94         pre->rchild=0; 95         pre->rtag=1; 96     } 97 } 98  99 int main(int argc, char* argv[])100 {101     TBTNode *p=initTBTNode();102     p=initTBTree(p);103     TBTNode *pre=initTBTNode();104     createInThread(p);105     Inorder(p);106     return 0;107 }


 

C++中序線索化二叉樹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.