二进制树中按深度加权的整数和值

时间:2013-03-18 01:15:54

标签: java recursion binary-tree

这是我的参考树:

    3
   / \
  5   2
 /   / \
1   4   6

以下是递归方法的预期输出:

(1*3) + (2 * (5 + 2)) + (3 * (1 + 4 + 6)) = 50

...这是我到目前为止的代码:

public int depthSum()
{
    int depth = 1;
    return depthSum(overallRoot, depth);
}

public int depthSum(IntTreeNode someNode, int someDepth)
{
    if(someNode == null)
    {
        return 0;
    }
    else
    {
        return someDepth * someNode.data + //some recursion
    }
}

我知道我可能会打电话给自己并增加一些深度,但我似乎无法做到这一点。有任何想法吗?

1 个答案:

答案 0 :(得分:4)

大概你的意思是:

return someDepth * someNode.data +
       depthSum(someNode.left, someDepth+1) +
       depthSum(someNode.right, someDepth+1);