Java中不使用全局变量的递归

Java中不使用全局变量的递归,java,recursion,Java,Recursion,我在java中使用递归时遇到问题,没有使用静态变量,我无法根据函数的返回类型构造递归调用。例如:这是我编写的一个按顺序遍历树的代码,但它只返回一个元素,我需要知道我做错了什么,以及如何纠正它 Code: public List<Integer> inorderTraversal(TreeNode root) { List<Integer> ls = new LinkedList<Integer>();

我在java中使用递归时遇到问题,没有使用静态变量,我无法根据函数的返回类型构造递归调用。例如:这是我编写的一个按顺序遍历树的代码,但它只返回一个元素,我需要知道我做错了什么,以及如何纠正它

 Code:

        public List<Integer> inorderTraversal(TreeNode root) {
            List<Integer> ls = new LinkedList<Integer>();
            if(root!=null)
            {
                inorderTraversal(root.left);
                ls.add(root.val);
                inorderTraversal(root.right);
            }

            return ls;
        }
If I try to write it this way, I get an error <Identifier Expected>
Code2:
    public void inorderTraversal(TreeNode root, ls)
          {
              if(root!=null)
              {
                  inorderTraversal(root.left,ls);
                  ls.add(root.val);
                  inorderTraversal(root.right,ls);
                }

              }

   public List<Integer> inorderTraversal(TreeNode root) {
    List<Integer> ls=new LinkedList<Integer>();
    inorderTraversal(root,ls);

    return ls;     

    }
    }
代码:
OrderTraversal中的公共列表(TreeNode根目录){
List ls=新链接列表();
if(root!=null)
{
inorderTraversal(root.left);
ls.add(root.val);
inorderTraversal(root.right);
}
返回ls;
}
如果我试着这样写,我会得到一个错误
代码2:
OrderTraversal中的公共void(树节点根,ls)
{
if(root!=null)
{
inorderTraversal(根、左、左);
ls.add(root.val);
inorderTraversal(root.right,ls);
}
}
OrderTraversal中的公共列表(TreeNode根目录){
List ls=新链接列表();
inorderTraversal(根,ls);
返回ls;
}
}

将结果列表作为参数传入:

public void inorderTraversal(TreeNode root, List<Integer> ls) {
    if(root!=null)
    {
        inorderTraversal(root.left, ls);
        ls.add(root.val);
        inorderTraversal(root.right, ls);
    }
}
orderTraversal中的公共void(树节点根,列表ls){
if(root!=null)
{
inorderTraversal(root.left,ls);
ls.add(root.val);
inorderTraversal(root.right,ls);
}
}

一个空行就足够了,除非你的目标是让你的代码尽可能难以阅读。对不起,我只是从我一直在做的在线编译器中复制了它。java不是按值传递参数吗?所以我怎么能期望附加相同的列表?java是按值传递的,但有一个微妙之处。对于对象,Java按值传递对象引用。如果您来自对象可以位于堆栈上的语言,那么这是一个有点棘手的部分。在Java中,所有对象都位于堆上,指定它们的变量都是引用。