Sto cercando di implementare BST in Julia, ma ho riscontrato dei problemi quando chiamo funzione di inserimento. Quando provo a creare un nuovo nodo, la struttura rimane invariata.Come implementare BST in Julia?
Il mio codice:
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)
Ho anche cercato di cambiare zero a nulla. La prossima versione che ho provato è con i tipi di dati definiti in Node, ma quando provo a chiamare insert con valore nulla (simile a C Null) mi ha dato errore.
Grazie per la risposta.
Non sono sicuro di aver capito la domanda: cosa ti aspetti esattamente dalla funzione "inserire"? L'esecuzione del codice restituisce 'Nodo (1,0,0)' per la penultima riga e 'Nodo (2,0,0)' per l'ultima riga, che sembra essere corretta? –
Non sono sicuro di cosa sia il BST, ma leggere il tuo codice è quello che stai cercando di scrivere una funzione che prende come input un 'node' (con campi' key', 'left' e' right') e un 'key', e quindi fa una delle due cose: (i) se' node' non è definito, crea una nuova istanza 'Node' con l'argomento' key' nel suo campo 'key' e zeri per' left' e ' right' or (ii) se esiste 'node', aggiorna il campo' left' o 'right' di esso con l'argomento' key' della funzione? –
BST sta per Albero di ricerca binario. La funzione inserisce nuovi nodi nella struttura. Zeros non significa niente. – pavelf