想问问使用Julia怎么实现树结构

想用Julia写一个简单的k近邻但不知道树结构怎么用Julia实现
希望有大佬教教我

1 个赞

Dict底层好像用树实现

1 个赞

https://github.com/JuliaCollections/AbstractTrees.jl/blob/master/examples/binarytree_core.jl

Ref 可能更有指针味

数据结构轮子参考:

kNN

1 个赞

好的好的 谢谢大佬

简单点的话直接用array来实现就可以了,比如初始化就是[r,,],其中r是根节点,后面分别为左右子数

binarytree 都可以用array 实现

似乎不是,我觉得更像哈希表

把root存在1号位,把 root的孩子存在2,3号位。把2的孩子存在4,5。把3的孩子存在6,7。依次反复操做。

懂?

我回复人家Dict的底层是哈希表和你的话有什么关系么?

我以为你回复上面那个。

试试这个

mutable struct BinaryTree
    data::Int
    left::Union{BinaryTree,Nothing}
    right::Union{BinaryTree,Nothing}
    function BinaryTree(data::Int, left=nothing, right=nothing)
        new(data, left, right)
    end
end

# 前序遍历递归实现
function preorder(tree::BinaryTree)
    print(tree.data," ")
    if tree.left != nothing
        preorder(tree.left)
    end
    if tree.right != nothing
        preorder(tree.right)
    end
    return
end
1 个赞