int getLen(struct TreeNode root){
if(root==NULL){
return 0;
}
return getLen(root->left)+getLen(root->right)+1;
}
void dfs(struct TreeNode root,struct TreeNode arr,int n){
if(root==NULL){
return;
}
dfs(root->left,arr,n);
arr[(n)++] = root;
dfs(root->right,arr,n);
}
struct TreeNode convert(struct TreeNode root) {
if(root==NULL){
return NULL;
}
int len = getLen(root);
if(len==1){
return root;
}
struct TreeNode arr=(struct TreeNode )malloc(sizeof(struct TreeNode )len);
int n = 0;
dfs(root,arr,&n);
arr[0]->right=arr[1];
for(int i=1;i[HTML_REMOVED]left=arr[i-1];
arr[i]->right=arr[i+1];
}
arr[n-1]->left=arr[n-2];
return arr[0];
}