Я написал функцию, чтобы построить БТС из массива несортированнымJava NullPointerException: Назначают нуль
public static TreeNode buildTree(int[] a){
TreeNode parent=new TreeNode();
TreeNode curr=new TreeNode();
curr.e=a[0];
TreeNode root=curr;
int v;
for(int i=1;i<a.length;i++){
curr=root;
v=a[i];
A: while(curr!=null){
if(v>=curr.e) {
parent=curr;
if(curr.right==null) break A;
curr=curr.right;
}
else{
parent=curr;
if(curr.left==null) break A;
curr=curr.left;
}
}
//parent is leaf
if(v>=parent.e){
System.out.println(parent.e);
parent.right=new TreeNode();
parent.right.e=v;
}
else{
parent.left=new TreeNode();
parent.left.e=v;
}
}
return root;
}
Если я не добавить эти строки:
if(curr.left==null) break A;
if(curr.right==null) break A;
Я получил nullPointerException
.
Я не понимаю, почему. Когда curr.left
является null
, тогда я назначаю curr=curr.left
, не делает ли я curr=null
, чем цикл while
будет пробит?
Нельзя ли присвоить null
объекту?
Спасибо!
Опубликовать исключение в полном объеме. –
, пожалуйста, открепите свой код! – OldProgrammer
boxed_ | что вы имеете в виду, избегая goto? благодаря! – fuiiii