计算Java中二叉树中的节点数

Man*_*hug 1 java recursion binary-tree

static int sum=0;
    public static int size(TreeNode root){
        if(root==null)
        return sum;
        sum++;
        sum=size(root.left);
        sum=size(root.right);
        return sum;
    }
Run Code Online (Sandbox Code Playgroud)

我们必须完成函数"size",它计算二叉树中的节点数.我写了上面的代码.对于某些测试用例,它给出了错误的答案.请解释上面的代码有什么问题.

Gho*_*ica 5

这里:

sum=size(root.left);
sum=size(root.right);
Run Code Online (Sandbox Code Playgroud)

你正在计算两个总和,然后扔掉第一个!

你可以去:return size(root.left)+size(root.right) + 1相反.

这里使用静态字段没有意义.如果有的话,那应该是该递归方法中的局部变量!分别为:只为null,否则使用我在这里提供的回报.首先没有必要为变量! sumreturn 0sum

  • 如果有人感兴趣的话,可以为该方法提供一个单线`return root == null 吗?0 : 大小(root.left) + 大小(root.right) + 1;` (2认同)