Copy of snippet "bt10(2b)"

#include<stdio.h>
#include<stdlib.h>
typedef struct node{int data;struct node*right, *left;};
node *createnode(int value){
node *newnode=(node*)malloc(sizeof(node));
newnode->data=value;newnode->left=newnode->right=NULL;return newnode;
}
node* insert(node* root,int value){
if(root==NULL){return createnode(value);}
if(value<root->data){root->left=insert(root->left,value);}
else{root->right=insert(root->right,value);}
return root;
}
node* tree(int arr{{^^%5B%5D^^}},int i,int n){
if(i>=n)return NULL;
node* root=createnode(arr[i]);
root->left=tree(arr,2*i+1,n);root->right=tree(arr,2*i+2,n);
return root;
}
void postorder(node* root){
if(root==NULL){return;}
postorder(root->left);postorder(root->right);
printf("%d ",root->data);
}
int main(){
int arr[5];
for(int i=0;i<5;i++){
scanf("%d",&arr[i]); 
}
node *root=tree(arr,0,5);
postorder(root);
}

#include<stdio.h>
#include<stdlib.h>
typedef struct node{int data;struct node *left,*right;}node;
node* createnode(int value){
node* newnode=(node*)malloc(sizeof(node));
newnode->data=value;newnode->left=newnode->right=NULL;return newnode;
}
node* tree(int a{{^^%5B%5D^^}},int i,int n){
if(i>=n)return NULL;
node *r=createnode(a[i]);
r->left=tree(a,2*i+1,n);r->right=tree(a,2*i+2,n);
return r;
}
void getlevel(node* r,int level, int cur, int arr{{^^%5B%5D^^}},int *k){
if(r==0)return;
if(cur==level){arr[(*k)++]=r->data;}
else{getlevel(r->left,level,cur+1,arr,k);
getlevel(r->right,level,cur+1,arr,k);}
}
void putlevel(node* r,int level, int cur, int arr{{^^%5B%5D^^}},int *k){
if(r==0)return;
if(cur==level){r->data=arr[(*k)++];}
else{putlevel(r->left,level,cur+1,arr,k);
putlevel(r->right,level,cur+1,arr,k);}
}
int height(node*r){
if(r==0)return 0;
int l=height(r->left),h=height(r->right);
return (l>h?l:h)+1;
}
void reverse(node* r){
int h=height(r);
for(int level=1;level<h;level+=2){
int arr[50],k=0;
getlevel(r,level,0,arr,&k);
for(int i=0,j=k-1;i<j;i++,j--){
int temp=arr[i];arr[i]=arr[j];arr[j]=temp;
}k=0;putlevel(r,level,0,arr,&k);
}
}
void inorder(node* r){
if(r==0){return;}
inorder(r->left);
printf("%d ",r->data);inorder(r->right);
}
int main(){
int n,a[25];scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
node* root=tree(a,0,n);reverse(root);inorder(root);
}