Wieso funktioniert der Code nicht?


04.08.2023, 17:33

wer schaut sich diese frage gerade an?

1 Antwort

 parent = new TNode(data);

Mir wäre neu, das Java per Pass-By-Referenz macht. Was du hier machst ist, die lokale Variable "parent" auf einen Wert zu setzen, nicht aber das Original übergebene Objekt.

DavidGoggins 
Fragesteller
 04.08.2023, 17:15

wie mache ich das sonst, im video hat der typ das ähnlich gemacht, er hat aber root übergeben (hab screenshot hochgeladen)

0
Destranix  04.08.2023, 17:41
@DavidGoggins

Dann übergib doch root und amch damit etwas. Oder verwende Rückgabewerte.

0
Destranix  04.08.2023, 17:57
@DavidGoggins

Klar, wenn man es richtug macht. Aber ich habe gerade nicht die Zeit dafür.

0
Destranix  04.08.2023, 19:41
@DavidGoggins
public void add(int data){
    root = add(data, root , root);
/*
    if(root == null){
        root = new TNode(data);
    }else{
        if(data < this.root.data){
            root.left = add(data, parent, root.left);
        }else {
            root.right = add(data, parent, root.right);
        }
    }
*/
}

public TNode add(int data, TNode parent, TNode child){
    if(child == null){
         return new TNode(data);
    }else{
        if(data < parent.data){
            child.left = add(data, child, child.left);
        } else {
            child.right = add(data, child.right);
        }
        return child;
    }
}

So sollte das funktionieren. Wenn nicht, dann mit dem auskommentiertem Part aber ohne den Funktionsaufruf.

1