Я написал рекурсивную функцию для добавления всех узлов бинарного дерева в список целочисленных типов, но по какой-то причине он продолжал вызывать у меня проблемы. Вот как первоначально выглядел мой код:
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<>();
helper(root, res);
return res;
}
public void helper(TreeNode root, List<Integer> res){
if(root == null){
return;
}
inorderTraversal(root.left);
res.add(root.val);
inorderTraversal(root.right);
}
Однако он продолжал давать сбой и не давал мне правильного решения. Но оказывается, что этот код работает, если взять первую строку из функции "inorderTraversal" и сделать ее глобальной:
List<Integer> res = new ArrayList<>();
Может кто-нибудь объяснить мне, почему это имеет значение и почему это было изначально неудачу?