#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedef struct node//二叉树的结点定义
{
char data;
struct node *lchild;
struct node *rchild;
}BiNode, *BiTree;
BiTree createBiTree()
{
BiTree T;
char c;
scanf("%c", &c);
if (c == '#')
T = NULL;
else
{
T = (BiTree)malloc(sizeof(BiNode));
T->data = c;
T->lchild = createBiTree();
T->rchild = createBiTree();
}
return T;
}
int f(BiTree bt, int *eq) {
int n,l,r;
n=l=r=0;
if(bt != NULL) {
l=r=1;
l += f(bt->lchild, eq);
r += f(bt->rchild, eq);
n = l+r-1;
if((int)fabs(l-r) > *eq) {
*eq = (int)fabs(l-r);
printf("%c%d\n",bt->data,*eq);
}
}
return n;
}
int main(int argc, const char * argv[]) {
BiTree T = createBiTree();
int eq = -1;
int num = f(T,&eq);
printf("%d %d\n", num,eq);
return 0;
}