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

时间:2017-03-02 02:08:20

标签: java recursion

我在使用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;     

    }
    }

1 个答案:

答案 0 :(得分:4)

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

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