/*innner order traverse for BST will be ordered
*1.sort the value in buffer *2.inner traverse the BST and insert the value *3.be careful for the formatted output *4.level traverse output using queue *//*c-style code
* abusing in global variable *not good encapsulation *may be possible to use reference for 'start' */1 #include2 #include 3 #include 4 #include 5 #define maxn 100 6 using namespace std; 7 typedef struct { 8 int left,right; 9 int value;10 int inserted;11 }binode;12 binode bitree[maxn];13 int buf[maxn];14 int start=0;15 queue q;16 void middle_insert(int root)17 {18 if(root==-1)return;19 middle_insert(bitree[root].left);20 if(bitree[root].left==-1 || bitree[bitree[root].left].inserted==1)21 {22 bitree[root].value=buf[start];23 bitree[root].inserted=1;24 start++;25 //return ;26 }27 middle_insert(bitree[root].right);28 }29 void level_traverse()30 {31 int i=0;32 q.push(0);33 while(!q.empty())34 {35 int tmp=q.front();36 buf[i++]=bitree[tmp].value;37 q.pop();38 if(bitree[tmp].left!=-1)q.push(bitree[tmp].left);39 if(bitree[tmp].right!=-1)q.push(bitree[tmp].right);40 }41 }42 int main()43 {44 //freopen("input.txt","r",stdin);45 int i,n;46 while(cin>>n)47 {48 memset(buf,0,sizeof(buf));49 memset(bitree,0,sizeof(bitree));50 //fill(bitree,bitree+n,0); parameter must be iterator51 for(i=0;i
IMPROVE IN C++
1 #include2 #include 3 #include 4 #include 5 #include 6 #define maxn 100 7 using namespace std; 8 typedef struct { 9 int left,right;10 int value;11 int inserted;12 }binode;13 14 15 binode bitree[maxn];16 int buf[maxn];17 void middle_insert(int root,int &start)18 {19 if(root==-1)return;20 middle_insert(bitree[root].left,start);21 if(bitree[root].left==-1 || bitree[bitree[root].left].inserted==1)22 {23 bitree[root].value=buf[start];24 bitree[root].inserted=1;25 start++;26 //return ;27 }28 middle_insert(bitree[root].right,start);29 }30 void level_traverse(binode bitree[],int buf[])31 {32 queue q;33 int i=0;34 q.push(0);35 while(!q.empty())36 {37 int tmp=q.front();38 buf[i++]=bitree[tmp].value;39 q.pop();40 if(bitree[tmp].left!=-1)q.push(bitree[tmp].left);41 if(bitree[tmp].right!=-1)q.push(bitree[tmp].right);42 }43 }44 int main()45 {46 47 freopen("input.txt","r",stdin);48 int n;49 while(cin>>n)50 {51 memset(buf,0,sizeof(buf));52 memset(bitree,0,sizeof(bitree));53 for(int i=0;i >bitree[i].left>>bitree[i].right;54 for(int i=0;i >buf[i];55 sort(buf,buf+n);56 //for(i=0;i