Ich versuche, BST in Julia zu implementieren, aber ich stieß auf Problem, wenn ich die Einfügefunktion aufrufen. Wenn ich versuche, einen neuen Knoten zu erstellen, bleibt die Struktur unverändert.Wie implementiert man BST in Julia?
Mein Code:
type Node
key::Int64
left
right
end
function insert(key::Int64, node)
if node == 0
node = Node(key, 0, 0)
elseif key < node.key
insert(key, node.left)
elseif key > node.key
insert(key, node.right)
end
end
root = Node(0,0,0)
insert(1,root)
insert(2,root)
Ich habe auch versucht Null zu nichts zu ändern. Die nächste Version, die ich ausprobiert habe, ist mit definierten Datentypen in Node, aber wenn ich versuche, Einfüge mit nichts Wert (ähnlich wie C Null) aufzurufen, gab es mir einen Fehler.
Danke für die Antwort.
Nicht sicher, ich verstehe die Frage - was genau erwartest du von der 'insert' Funktion? Wenn Sie den Code ausführen, wird 'Node (1,0,0)' für die vorletzte Zeile und 'Node (2,0,0)' für die letzte Zeile angezeigt, was korrekt zu sein scheint. –
Ich bin nicht sicher, was BST ist, aber das Lesen Ihres Codes ist, was Sie versuchen, eine Funktion zu schreiben, die als Eingabe einen 'Knoten' (mit den Feldern' key', 'left' und' right') und a 'key' und führt dann zwei Dinge aus: (i) Wenn' node' nicht definiert ist, erstellen Sie eine neue 'Node'-Instanz mit dem Schlüssel' key' in ihrem 'key'-Feld und Nullen für' left' und ' richtig? oder (ii) Wenn 'node' existiert, aktualisiere das' left' oder 'right' Feld mit dem' key' Argument der Funktion? –
BST steht für Binary Search Tree. Die Funktion fügt neue Knoten zum Strukturieren ein. Zeros steht für nichts. – pavelf