Ich schreibe eine benutzerdefinierte Binary Search Tree-Klasse, und aus irgendeinem Grund ist der Wert für die Knoten immer verloren. Hier ist meine Methode.Binary Search Tree add Methodenreferenz verloren gehen
private void add(TreeNode node, int a) {
if(node==null) {
System.out.println("node=null");
node = new TreeNode(a);
}else {
if(a<node.value) {
System.out.println("root > value "+"root: "+node.value+"value: "+a);
add(node.left, a);
}else {
System.out.println("root < value "+"root: "+node.value+"value: "+a);
add(node.right, a);
}
}
}
//root is class data
public void add(int a) {
add(root, a);
}
Als ich dies ausführen, druckt der Konsolenbildschirm immer Knoten = null aus, die erste if-Anweisung nie falsch überprüft, was bedeutet, Werte eigentlich nie zu meinen Knoten zugeordnet. Ich denke, die Referenz ist irgendwo verloren gegangen, aber ich weiß nicht wo.
Wenn Sie node.left/right übergeben und es null ist, weist Ihr Code der Referenz einen neuen Wert zu, der tatsächlich keinen linken/rechten Knoten erstellt. Fügen Sie Ihren vollständigen Klassencode ein, damit wir Ihnen sagen können, was Sie tun müssen. –
Sie haben den Code nicht eingeschlossen, der 'root' deklariert/initialisiert. Woher sollen wir wissen, warum es null ist? – shmosel