2016-02-27 6 views
0

Вот структура моего TreeNodeNullPointerException для моего TreeNode

class Node{ 
    int value; 
    Node left; 
    Node right; 
    public Node(int val){ 
     this.value=val; 
    } 
} 

В основной: Стараюсь построение дерева. Корень 10 и я пытаюсь добавить левое поддерево со значением 4

Node sub=new Node(10); 
    sub.left.value=4;  // line 1 
    sub.left=new Node(4); // line 2 

Почему линия 1 не будет работать, и линия 2 работы?

+0

Я установил значение узла, а не узел 4 @ developer033 – KKKK

ответ

1

left не инициализируется ни при объявлении, ни в конструкторе. Поэтому, когда вы вызываете sub.left.whatever, вы получаете NPE, потому что sub.left имеет значение null в этой точке.

Переупорядочить линии 1 и 2 поможет.

Почему линия 2 работает сама по себе?

Обратите внимание, что строка 2 - это все задания. sub.left назначается новый узел, value присваивается как 4.

-1

В java, если вы не объявляете какой-либо конструктор, JVM создаст конструктор по умолчанию без параметров. Но если вы объявите конструктор с параметром, JVM не будет создавать конструктор по умолчанию без параметров. В строке 1

sub.left.value = 4; Ваш класс еще не начальный. Таким образом, он будет равен нулю.

В строке 1

sub.left = новый узел (4);

Начальный класс и присвоить ему значение. Поэтому не может быть null.

Смежные вопросы