Я пытаюсь определить тип Двоичного дерева поиска целых чисел в Юлии с помощью следующего:
mutable struct BST
key::Int
left::Union{BST, Nothing}
right::Union{BST, Nothing}
end
Теперь я хотел бы определить конструкторы и базовый Push! метод, использующий этот наивный подход:
BST(key::Int) = BST(key, Nothing, Nothing)
BST() = BST(0)
function Base.push!(node::BST, key)
if key < node.key
if node.left.isnull
node.left = BST(key)
else
push!(node.left.value, key)
end
elseif key > node.key
if node.right.isnull
node.right = BST(key)
else
push!(node.right.value, key)
end
end
end
root = BST()
push!(root, 1)
push!(root, 2)
Конечно, это не работает с Юлией 1.0! Я, конечно, не правильно понимаю использование союза. Они только абстрактный тип? Что может быть правильным способом определения этой структуры данных?
Документация Джулии плохо объясняет эту тему.
Предыдущий вопрос обратил внимание субъекта на устаревший тип Nullable:
Как реализовать дерево бинарного поиска в Юлии?