如何在 rust 中实现节点知道其父级和子级的树

How do I implement a tree in rust where nodes are aware of their parent and children

提问人:Snek 提问时间:4/2/2023 最后编辑:Samuel HapakSnek 更新时间:4/2/2023 访问量:178

问:

我一直在尝试用这样的东西来实现它,但我总是遇到问题,任何人都可以为我提供示例实现的链接吗?Rc<RefCell<>>

这是我尝试过的:

pub struct Node<T> {
    value: T,
    parent: Option<Rc<RefCell<Node<T>>>,
    children: Vec<Rc<RefCell<Node<T>>>>,
}

我遇到的大多数问题都来自这样一个事实,即节点引用它的父节点,但它的父节点也引用节点。

注意:我没有包含诸如添加子节点之类的函数,因为它很简单:创建具有其父节点的子节点,然后将子节点推送到父节点的 children 字段。Rc::clone()

参考细胞

评论

4赞 cafce25 4/2/2023
您可能应该使用 Weak 而不是父级,除此之外,您的定义在第一次尝试时看起来没问题。如果没有关于你到底在哪里被卡住的进一步信息,我们无法进一步帮助你。也许您想阅读 Learning Rust With Totally Too Many Linked Lists,其中涵盖了双链表的主题,其中哪些树只是它们的概括。Rc
0赞 ozkanpakdil 4/8/2023
github.com/TheAlgorithms/Rust/blob/master/src/data_structures/......可能会有所帮助

答: 暂无答案