java - 按深度加权的整数二叉树中的求和值

标签 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
    }
}

我知道我可能必须调用自己并增加 someDepth,但我似乎无法做到这一点。有任何想法吗?

最佳答案

大概你的意思是:

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

关于java - 按深度加权的整数二叉树中的求和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15468346/

相关文章:

Java - Binary Search Node 如何检查对象?

algorithm - 基于堆栈的欧拉树遍历问题

c++ - 二叉树遍历以枚举斐波那契值的所有排列

java - volatile 关键字 : is the variable I am using among two threads synchronized?

java - 基于某些请求属性而不是 Iplanet 服务器中的 session 的粘性

java - Amazon SQS java sdk 在消耗 500 条消息后停止

list - Haskell:调用其他函数+递归

c - C 中的二项式系数递归函数带来错误的结果,为什么?

optimization - 通过 Fortran 中的静态变量实现性能

java - 使用 XmlPullParserFactory 解析 XML 在 while 语句中崩溃