Когда я вызываю эту функцию, почему возникает ошибка stackoverflow? Я проверил условия терминала, но не могу понять, где проблема.Ошибка Java stackoverflow в рекурсивной функции
public static TreeNode buildTree(int t1, int t2, ListNode[] nodeArray) {
if(t1 == t2){
TreeNode temp = new TreeNode(nodeArray[t1].val);
temp.left = null;
temp.right = null;
return temp;
}
else if(t1 > t2){
return null;
}
else{
TreeNode root = new TreeNode(nodeArray[(t1+t2)/2].val);
root.left = buildTree(0,(t1+t2)/2-1,nodeArray);
root.right = buildTree((t1+t2)/2+1,nodeArray.length-1,nodeArray);
return root;
}
}
Как вы вызывающему этот метод? – npinti
Наиболее вероятная ситуация заключается в том, что вы всегда входите в другую часть вашего состояния и заканчиваете бесконечный вызов 'buildTree'. – SomeJavaGuy