我知道这段代码应该可以工作,但它不会。有谁知道我错过了什么?我正在尝试获取二叉树中所有节点的总和。这种方法为什么计算二叉树的总和不起作用?
public int getSum() {
if (this == null) {
return 0;
} else {
return this.value + right.getSum() + left.getSum();
}
}
我知道这段代码应该可以工作,但它不会。有谁知道我错过了什么?我正在尝试获取二叉树中所有节点的总和。这种方法为什么计算二叉树的总和不起作用?
public int getSum() {
if (this == null) {
return 0;
} else {
return this.value + right.getSum() + left.getSum();
}
}
您的支票this == null
是完全没用的。但是,您需要检查您的左右节点的存在,您是否需要检查。试试这个:
return this.value + (right != null ? right.getSum() : 0)
+ (left != null ? left.getSum() : 0);
嘿,现在它的工作!非常感谢!你能解释一下为什么我的代码不起作用吗? – user1420042 2013-02-20 21:08:27
由于二叉树节点不保证有左侧和/或右侧子节点。在调用函数之前,您需要检查它们的存在。 – Perception 2013-02-20 21:10:11
当你声明这不起作用时,当你尝试时会发生什么?你有运行时错误吗?你有错误的答案吗?什么是一些示例输入,预期结果和实际结果? – 2013-02-20 21:01:37
“this”如何为空? – rgettman 2013-02-20 21:02:22
“这”不利于兄弟。 – Kevin 2013-02-20 21:03:05