func_code_string: #include <bits/stdc++.h>   struct node {     char a;     struct node *left;     struct node *right;   };   int main() {     int t, len;     char ch[205];     struct node *p, *q, *r[26];     scanf( %d , &t);     getchar();     while (t--) {       int flag = 0;       scanf( %s , ch);       len = strlen(ch);       for (int i = 0; i < 26; i++) r[i] = NULL;       for (int i = 0; i < len; i++) {         if (r[ch[i] -  a ] == NULL) {           p = (struct node *)malloc(sizeof(struct node));           p->a = ch[i];           p->left = NULL;           p->right = NULL;           r[ch[i] -  a ] = p;           if (i > 0) {             if (r[ch[i - 1] -  a ]->left == NULL) {               r[ch[i - 1] -  a ]->left = p;               p->right = r[ch[i - 1] -  a ];             } else if (r[ch[i - 1] -  a ]->right == NULL) {               r[ch[i - 1] -  a ]->right = p;               p->left = r[ch[i - 1] -  a ];             } else {               printf( NO n );               flag = 1;               break;             }           }         } else {           if (r[ch[i] -  a ]->left != r[ch[i - 1] -  a ] &&               r[ch[i] -  a ]->right != r[ch[i - 1] -  a ]) {             printf( NO n );             flag = 1;             break;           }         }       }       if (flag == 1) continue;       printf( YES n );       for (int i = 0; i < 26; i++) {         if (r[i] != NULL) {           q = r[i];           while (q->left != NULL) q = q->left;           while (q != NULL) {             printf( %c , q->a);             q = q->right;           }           break;         }       }       for (int i = 0; i < 26; i++)         if (r[i] == NULL) printf( %c , i +  a );       printf(  n );     }   }   