码迷,mamicode.com
首页 > 编程语言 > 详细

【c语言】数据结构(二叉树操作)

时间:2017-05-26 21:53:35      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:scan   style   fflush   ret   push   printf   bit   c语言   nod   

 

 

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 typedef struct BITree{
  4     char data;
  5     BITree *lchild;
  6     BITree *rchild;
  7 }BITree,*BiTree;
  8 typedef struct Queue{
  9     BiTree data;
 10     Queue *next;
 11 }Queue;
 12 BITree *pop(Queue *p)
 13 {
 14     Queue *q;
 15     q=p->next;
 16     q->next=p->next;
 17     return q->data;
 18 }
 19 void push(Queue *q,BiTree &p)
 20 {
 21     Queue *q1;
 22     q1=(Queue*)malloc(sizeof(Queue));
 23     if(!q1)exit(0);
 24     q1->data=p;
 25     q->next=q1->next;
 26     q->next=q1;
 27 }
 28 void CreateBiTree(BiTree &p)
 29 {
 30     char d;
 31     scanf("%c",&d);
 32     fflush(stdin);
 33     if(d==#)p=NULL;
 34     else{
 35         p=(BITree*)malloc(sizeof(BITree));
 36         if(!p)exit(0);
 37         p->data=d;
 38         CreateBiTree(p->lchild);
 39         CreateBiTree(p->rchild);
 40     }
 41 }
 42 void Q_BiTree(BiTree &p)
 43 {
 44     if(p==NULL)
 45     return ;
 46     else{
 47         printf("%c",p->data);
 48         Q_BiTree(p->lchild);
 49         Q_BiTree(p->rchild);
 50     }
 51 }
 52 void Z_BiTree(BiTree &p)
 53 {
 54     if(p==NULL)
 55         return;
 56     else{
 57         Z_BiTree(p->lchild);
 58         printf("%c",p->data);
 59         Z_BiTree(p->rchild);
 60     }
 61 }
 62 void H_BiTree(BiTree &p)
 63 {
 64     if(p==NULL)
 65         return ;
 66         else{
 67             H_BiTree(p->lchild);
 68             H_BiTree(p->rchild);
 69             printf("%c",p->data);
 70         }
 71 }
 72 int depth(BiTree &p)
 73 {
 74     if(p==NULL)
 75         return 0;
 76     else
 77     {
 78         int l=depth(p->lchild);
 79         int r=depth(p->rchild);
 80         return (l>r?l:r)+1;
 81     }
 82 }
 83 int num_of_nodes(BiTree &p)
 84 {
 85     if(p==NULL)
 86         return 0;
 87     return 1+num_of_nodes(p->lchild)+num_of_nodes(p->rchild);
 88 }
 89 int num_of_yezi(BiTree &p)
 90 {
 91     if(p==NULL)
 92         return 0;
 93     if((p->lchild==NULL)&&(p->rchild==NULL))
 94         return 1;
 95     return num_of_nodes(p->lchild)+num_of_yezi(p->rchild);
 96 }
 97 int num_of_1nodes(BiTree &p)
 98 {
 99 
100     if(p==NULL)
101         return 0;
102     if((p->lchild==NULL&&p->rchild!=NULL)||(p->lchild!=NULL&&p->rchild==NULL))
103         return 1;
104     return num_of_1nodes(p->lchild)+num_of_1nodes(p->rchild);
105 }
106 void changeNode(BiTree &p)
107 {
108     if(p==NULL)
109         return ;
110     else{
111         BiTree q;
112         q=p->lchild;
113         p->lchild=q->rchild;
114         q->rchild=q;
115     }
116     changeNode(p->lchild);
117     changeNode(p->rchild);
118 }
119 void F_Q_BiTree(BiTree &p)
120 {
121     Queue *q;
122     q=(Queue *)malloc(sizeof(Queue));
123     if(!q)exit(0);
124     q->next=NULL;
125     while(p||q->next!=NULL)
126     {
127         while(p)
128         {
129             push(q,p);
130             printf("%c",p->data);
131             p=p->lchild;
132         }
133         p=pop(q);
134         p=p->rchild;
135     }
136 }
137 void F_Z_BiTree(BiTree &p)
138 {
139     Queue *q;
140     q=(Queue *)malloc(sizeof(Queue));
141     if(!q)exit(0);
142     q->next=NULL;
143     while(p||q->next!=NULL)
144     {
145         while(p)
146         {
147             push(q,p);
148             p=p->lchild;
149         }
150         p=pop(q);
151         printf("%c",p->data);
152         p=p->rchild;
153     }
154 }
155 void F_H_BiTree(BiTree &p)
156 {
157     //buxiele
158 }
159 int main()
160 {
161     int n=0;
162     BiTree p;
163     CreateBiTree(p);
164     /*n=num_of_nodes(p);
165     n=num_of_yezi(p);
166     n=depth(p);
167     n=num_of_1nodes(p);
168     printf("%d",n);
169     changeNode(p);*/
170     //F_Q_BiTree(p);
171     Q_BiTree(p);
172 
173 
174 }

 

【c语言】数据结构(二叉树操作)

标签:scan   style   fflush   ret   push   printf   bit   c语言   nod   

原文地址:http://www.cnblogs.com/duolaAbao/p/6836476.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!