#include<iostream>
using namespace std;
char path[100]; //存放路径
char ans[100]; //临时存放
int len;
typedef struct BiTNode
{
char data;
struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
void Creatbitree(BiTree& T, char s[], int& i)
{
if (s[i] == '0')
T = NULL;
else
{
T = new BiTNode;
T->data = s[i];
Creatbitree(T->lchild, s, ++i);
Creatbitree(T->rchild, s, ++i);
}
}
void Findlongest(BiTree T, int n)
{
if (T)
{
ans[n] = T->data;
if (!T->lchild && !T->rchild)
{
if (n + 1 > len)
{
len = n + 1;
for (int i = 0; i <= n; i++)
{
path[i] = ans[i];
}
}
}
else
{
Findlongest(T->lchild, n + 1);
Findlongest(T->rchild, n + 1);
}
}
}
int main()
{
char s[200];
while (cin >> s && s[0] != '0')
{
int i = -1;
BiTree T;
Creatbitree(T, s, ++i);
len = 0;
Findlongest(T, len);
cout << len << endl;
for (int j = 0; j < len; j++)
{
cout << path[j];
}
}
return 0;
}
二叉树最长路径(c++)
于 2022-03-23 14:41:12 首次发布