JuliaでBSTを実装しようとしていますが、挿入機能を呼び出すときに問題が発生しました。新しいノードを作成しようとすると、構造は変更されません。JuliaでBSTを実装する方法は?
マイコード:
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)
私も何にもゼロを変更しようとしました。私が試した次のバージョンはNodeで定義されたデータ型を使っていますが、何も値を持たないinsert(C Nullに似ています)を呼び出そうとするとエラーが出ます。
ありがとうございます。
私は質問を理解しています - 正確に 'insert'関数が何をすると思いますか?あなたのコードを実行すると、2番目から最後の行の 'Node(1,0,0)'、最後の行の 'Node(2,0,0)'が返されます。 –
私はBSTとは分かりませんが、あなたのコードを読んでいるのは、入力として 'node'(' key'、 'left'と' right'を持つ)と'key'フィールドに' key'引数を指定し、 'key'フィールドに' key'引数を指定して新しい 'Node'インスタンスを作成し、 (ii) 'node'が存在する場合、' left'または 'right'フィールドを関数の' key'引数で更新します。 –
BSTはバイナリ検索ツリーの略です。新しいノードを構造に挿入します。ゼロは何も意味しない。 – pavelf