我无法理解为什么我的计数器无法存储正确的值。

当我将计数器保留为通用变量时,此代码有效,但是
如果我在函数中传递“ count”,它将不起作用

public int numberOfLeaves(TreeNode root) {
    if(root==null)
       return 0;

    return leaves(root,0);
}



public int leaves(TreeNode TN,int count){

  if(TN.left==null && TN.right==null) {
       count++;
  }

  if(TN.left!=null){
       leaves(TN.left,count);
  }

  if(TN.right!=null){
      leaves(TN.right,count);
  }

return count;

}

最佳答案

您甚至不需要传递一个count变量。递归为您工作。

您只需要添加左子树的叶数+右子树的叶数:

public int leaves(TreeNode TN) {
    if(TN == null)
        return 0;

    if(TN.left == null && TN.right == null)
        return 1;

    return leaves(TN.left) + leaves(TN.right);
}

关于java - 我的代码有什么问题? “使用递归计算二叉树的叶子”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57695254/

10-13 05:32