Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct Node<T: PartialOrd> {
- val: Option<T>,
- left: Option<Box<Node<T>>>,
- right: Option<Box<Node<T>>>,
- }
- impl<T: PartialOrd> Node<T> {
- fn new() -> Node<T> {
- return Node { val: None, left: None, right: None };
- }
- fn add(&mut self, elem: T) {
- match &self.val {
- None => { self.val = Some(elem); println!("assigned"); },
- Some(x) => {
- if *x <= elem {
- match self.left {
- None => { self.left = Some(Box::new(Node::new())) }
- Some(_) => {}
- }
- println!("going left");
- self.left.as_mut().map(|n| (*n).add(elem));
- } else if elem > *x {
- match self.right {
- None => { self.right = Some(Box::new(Node::new())) }
- Some(_) => {}
- }
- println!("going right");
- self.right.as_mut().map(|n| (*n).add(elem));
- }
- }
- }
- }
- }
- fn main() {
- let mut n = Node::new();
- n.add(20);
- n.add(10);
- n.add(1);
- n.add(5);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement