我有一个二叉树,其中节点(和根)保存 int vals,它的叶子包含代表价格的 vals。节点的 int vals 表示在计算中可以取其子树中的叶子数。我必须说出我能从这棵树上得到的最大价格总和是多少。
起初我想获取链表中的所有叶子,然后开始按其父值过滤它们,但这似乎不是最好的解决方案。
有任何想法吗?!
我有一个二叉树,其中节点(和根)保存 int vals,它的叶子包含代表价格的 vals。节点的 int vals 表示在计算中可以取其子树中的叶子数。我必须说出我能从这棵树上得到的最大价格总和是多少。
起初我想获取链表中的所有叶子,然后开始按其父值过滤它们,但这似乎不是最好的解决方案。
有任何想法吗?!
int numberOfLeaves( Node n ){
int intVal = 0;
if( n.Left != null ){ intVal += numberOfLeaves(n.Left); }
if( n.Right != null ){ intVal += numberOfLeaves(n.Right); }
if( n.Left == null && n.Right == null ){ return 1; }
return intVal;
}
对于最大的总和,如果我正确理解“最大总和”,只需将所有叶子推入一个列表并总结所有正价格。