I wrote a function to build a BTS from a unsorted array
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 I didn't add these lines:
if(curr.left==null) break A;
if(curr.right==null) break A;
I got nullPointerException
.
I don't understand why.
When curr.left
is null
, then I assign curr=curr.left
, isn't I make curr=null
, than the while
loop will be break?
Is it illegal to assign null
to a object like this?
Thanks!!