2013-02-20 125 views
0

我知道这段代码应该可以工作,但它不会。有谁知道我错过了什么?我正在尝试获取二叉树中所有节点的总和。这种方法为什么计算二叉树的总和不起作用?

public int getSum() { 
    if (this == null) { 
     return 0; 
    } else { 
     return this.value + right.getSum() + left.getSum(); 
    } 
} 
+1

当你声明这不起作用时,当你尝试时会发生什么?你有运行时错误吗?你有错误的答案吗?什么是一些示例输入,预期结果和实际结果? – 2013-02-20 21:01:37

+4

“this”如何为空? – rgettman 2013-02-20 21:02:22

+1

“这”不利于兄弟。 – Kevin 2013-02-20 21:03:05

回答

5

您的支票this == null是完全没用的。但是,您需要检查您的左右节点的存在,您是否需要检查。试试这个:

return this.value + (right != null ? right.getSum() : 0) 
     + (left != null ? left.getSum() : 0); 
+0

嘿,现在它的工作!非常感谢!你能解释一下为什么我的代码不起作用吗? – user1420042 2013-02-20 21:08:27

+0

由于二叉树节点不保证有左侧和/或右侧子节点。在调用函数之前,您需要检查它们的存在。 – Perception 2013-02-20 21:10:11