Wie kann ein vollständiger Binärbaum mithilfe von Rekursion implementiert werden, ohne den Wert des Knotens zu vergleichen?

public void recurInsert(BinaryTree.Node root, BinaryTree.Node newNode, int height) {
    if (newNode == null) {
        System.out.println("InsertNode is empty, please create new one");
        return;
    }
    else{
        if (height == 1) {
            if (root == null)
                return;
            else if (root.leftChild == null) {
                root.leftChild = newNode;
                System.out.println("left" + newNode.data);
            }
            else {
                root.rightChild = newNode;
                System.out.println("right" + newNode.data);
            }
        }
        else{
            if (root.leftChild != null)
                recurInsert(root.leftChild, newNode, height-1);
            //else (root.rightChild != null)
            //    recurInsert(root.rightChild, newNode, height-1);
            if (root.rightChild != null)
                recurInsert(root.rightChild, newNode, height-1);
        }
    }
}

Dies ist der Code, den ich implementiert habe, aber er fügt tatsächlich zwei gleiche Knoten ein, um das Gleichgewicht herzustellen. Kann mir jemand helfen, den Fehler zu beheben oder auf andere Weise zu implementieren?

Ich möchte nur eine Einfügung für einen vollständigen Binärbaum mithilfe von Rekursion implementieren. Angenommen, Sie fügen einen Knoten mit einer Sequenz A, B, C, D, E, F ein. Es kommt vor, als ob root A ist und sein linkes Kind B ist, und rechtes Kind ist C und Bs Kinder sind D und E und Cs linkes Kind ist F.

Mein Code hat einen Fehler, aber diese Einfügung wurde implementiert, damit der Baum ein binärer vollständiger Baum ist. Es sieht so aus, als wären A's Kinder B und C. Aber B's Kinder sind D, E und C's Kinder sind D und E anstelle von F. Ich hoffe, ihr könnt mir helfen, den Fehler zu beheben oder ihn mithilfe von Rekursion auf andere Weise zu implementieren .

Glücklicherweise. Ich habe ein ähnliches gesehenFrage gepostet auf Stapelüberlauf, aber ich möchte es mit Rekursion implementieren, nicht mit zusätzlicher Datenstruktur.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage