我在使用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;
}
}
答案 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);
}
}