Googler
BAN USERvoid sumValue(Node *n, list<int> iValueList, int value)
{
if( n == 0 )
{
return;
}
value += n->value;
if( n->left == 0 && n->right == 0 )
{
printf("leaf node v:%d\n", value);
iValueList.push_front(value);
}
sumValue(n->left, iValueList, value);
sumValue(n->right, iValueList, value);
}
bool findLeafMaxValueSum(int& out)
{
list<int> list;
int value = 0;
sumValue( root, list ,value);
out = 0;
if( list.size() > 0 )
{
list<int>::iterator itr;
for( itr = list.began(); itr != list.end(); itr++ )
{
if( *itr > out )
{
out = *itr;
}
}
return true;
}else{
return false;
}
}
I think my answer is not good to this question. However, if we need to sort sum values for each leafs, mine is one option.
- Googler October 27, 2013