我的代码的问题是它正在计算叶节点,但我不认为我知道我需要在root.left和root.right为null时停止但不太确定如何将其转换为代码
这是我的代码:
public int countEvenBranches() {
return countEvenBranches(overallRoot);
}
private int countEvenBranches(IntTreeNode root) {
if (root == null) {
return 0;
} else if (root.data % 2 == 1 ){
return countEvenBranches(root.left) + countEvenBranches(root.right);
} else {
return 1 + countEvenBranches(root.left) + countEvenBranches(root.right);
}
}
答案 0 :(得分:2)
如果您只需要查明左侧和右侧是否为空,那么您可以执行类似
的操作if(root.left == null || root.right == null)
return 0;
答案 1 :(得分:1)
我最终搞清楚了。检查root.left是否等于null并且root.right等于null检查节点是否有子节点。
以下是适用于所有情况的解决方案:
private int countEvenBranches(IntTreeNode root) {
if (root == null) {
return 0;
} else if (root.data % 2 == 1 || root.left == null && root.right == null){
return countEvenBranches(root.left) + countEvenBranches(root.right);
} else {
return 1 + countEvenBranches(root.left) + countEvenBranches(root.right);
}
}