标签: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 }
标签:scan style fflush ret push printf bit c语言 nod
原文地址:http://www.cnblogs.com/duolaAbao/p/6836476.html