标签:release names 问题 string size %s mamicode std idt
问题描述:
代码描述:
1 #include<cstdio> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<queue> 5 #define MAXN 256 6 using namespace std; 7 char s[MAXN+10]; 8 typedef struct Node 9 { 10 int h_v; 11 int v; 12 struct Node* left; 13 struct Node* right; 14 }node,*pt; 15 16 pt Newnode() //建立新节点 17 { 18 pt p=(pt)malloc(sizeof(node)); 19 p->h_v=0; 20 p->left=p->right=NULL; 21 return p; 22 } 23 24 pt root=Newnode(); 25 26 void addnode(int v,char *s) 27 { 28 pt p=root; 29 int n=strlen(s); 30 for(int i=0;i<n;i++) 31 { 32 if(*(s+i)==‘L‘) 33 { 34 if(p->left==NULL) 35 { 36 p->left=Newnode(); 37 } 38 p=p->left; 39 } 40 else if(*(s+i)==‘R‘) 41 { 42 if(p->right==NULL) 43 { 44 p->right=Newnode(); 45 } 46 p=p->right; 47 } 48 } 49 if(p->h_v==1) 50 { 51 printf("值多次给出错误\n"); 52 return; 53 } 54 p->v=v; 55 p->h_v=1; 56 } 57 58 void Read_input() 59 { 60 while(scanf("%s",&s)==1) 61 { 62 if(strcmp(s,"()")==0) break; 63 int v; 64 sscanf(s+1,"%d",&v); 65 addnode(v,strchr(s,‘,‘)+1); 66 } 67 } 68 69 void BFS(pt root) 70 { 71 queue<pt> q; 72 queue<int> ans; 73 q.push(root); 74 pt p; 75 while(!q.empty()) 76 { 77 p=q.front(); 78 q.pop(); 79 if(!p->h_v) 80 { 81 printf("空值错误\n"); //应题目要求,如果发现有节点没赋值,报错退出 82 return; 83 } 84 ans.push(p->v); 85 if(p->left) q.push(p->left); 86 if(p->right) q.push(p->right); 87 } 88 while(!ans.empty()) 89 { 90 printf("%d\t",ans.front()); 91 ans.pop(); 92 } 93 } 94 95 void release(pt root) //释放动态内存,以免内存泄漏 96 { 97 if(!root) return; 98 if(root->left) release(root->left); 99 if(root->right) release(root->right); 100 } 101 102 int main() 103 { 104 Read_input(); 105 BFS(root); 106 release(root); 107 return 0; 108 }
运行结果:
标签:release names 问题 string size %s mamicode std idt
原文地址:https://www.cnblogs.com/bboykaku/p/12711804.html