I have a tree-like data structure. Every Node
may have two children (left and right). Also each node may have a parent node. I need to set a parent node inside method 'set_left'. How should I do this?
pub struct Node<'a> {
parent: Option<&'a Node<'a>>,
data: u32,
pub left: Option<Box<Node<'a>>>,
pub right: Option<Box<Node<'a>>>
}
impl<'a> Node<'a> {
pub fn new(data: u32) -> Node<'a> {
Node {
parent: None,
data,
left: None,
right: None,
}
}
pub fn set_left(&mut self, child: Option<Box<Node<'a>>>) {
self.left = child;
match &self.left {
// Errors here:
Some(node) => { node.parent = Some(&self); } ???
None => (),
}
}
}