Java:递归计算二进制搜索树中的偶数值

时间:2010-04-02 13:13:42

标签: java recursion tree count binary-search-tree

我需要找出二叉树中包含多少个偶数值。

这是我的代码。

private int countEven(BSTNode root){

if ((root == null)|| (root.value%2==1))
return 0;

return 1+ countEven(root.left) + countEven(root.right);


}

这个我只是编码,因为我没有办法测试这个。我现在无法测试它,但需要一个非常糟糕的答案。 非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

如果某个节点的奇数值包含具有偶数值的子节点,则子代码将不会计入代码中。下面的小改进。

private int countEven(BSTNode root){

  if (root == null)
    return 0;

  int val = (root.value%2==1) ? 0 : 1;

  return val + countEven(root.left) + countEven(root.right);


}

答案 1 :(得分:0)

private int countEven(BSTNode root) {
   if (root == null)
      return 0;

   int n = countEven(root.left) + countEven(root.right);
   if(root.value % 2 == 0)
      return n + 1;
   else
      return n;
}