#include <iostream>
using namespace std;
typedef struct BiTNode
{
int 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 = int(s[i]) - 48;
CreatBitree(T->lchild, s, ++i);
CreatBitree(T->rchild, s, ++i);
}
}
int Length(BiTree T)
{
if (!T)
return 0;
else if (!T->lchild && !T->rchild)
return T->data;
return Length(T->lchild) >= Length(T->rchild) ? Length(T->lchild) + T->data : Length(T->rchild) + T->data;
}
int main()
{
BiTree T;
T = NULL;
char s[200];
while (cin >> s && s[0] != '0')
{
int i = -1;
CreatBitree(T, s, ++i);
}
cout << Length(T) << endl;
return 0;
}
根节点出发的最长路径(c++)
于 2022-03-26 10:36:45 首次发布