老师好,关于递归调用,有如下算法代码:
class Solution {
public void recoverTree(TreeNode root) {
TreeNode pre = null;
TreeNode first = null;
TreeNode second = null;
helper(root, pre, first, second);
int temp = first.val;
first.val = second.val;
second.val = temp;
}
private void helper(TreeNode root, TreeNode pre, TreeNode first, TreeNode second){
if(root == null) return;
helper(root.left, pre, first, second);
if(pre != null && pre.val > root.val){
if(first == null){
first = pre;
second = root;
}else{
second = root;
}
}
pre = root;
helper(root.right, pre, first, second);
}
}
我的问题是3-5行的三个变量,这里要通过一个私有方法helper去修改pre, first和second的变量值,但是运行后发现是空指针。
我的问题是,如果在helper方法中,没有返回三个变量的值,是否就无法改变recoverTree方法中的三个变量值?这里的修改方法,要么是在helper方法中,返回一个first和scond的数组,要么就把三个变量放到全局变量中?