二进制搜索树:需要递归计算偶数分支

时间:2013-06-09 22:08:26

标签: java

我的代码的问题是它正在计算叶节点,但我不认为我知道我需要在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);
    }
}

2 个答案:

答案 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);
    }
}