Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. struct Node<T: PartialOrd> {
  2. val: Option<T>,
  3. left: Option<Box<Node<T>>>,
  4. right: Option<Box<Node<T>>>,
  5. }
  6.  
  7. impl<T: PartialOrd> Node<T> {
  8. fn new() -> Node<T> {
  9. return Node { val: None, left: None, right: None };
  10. }
  11.  
  12.  
  13. fn add(&mut self, elem: T) {
  14. match &self.val {
  15. None => { self.val = Some(elem); println!("assigned"); },
  16. Some(x) => {
  17. if *x <= elem {
  18. match self.left {
  19. None => { self.left = Some(Box::new(Node::new())) }
  20. Some(_) => {}
  21. }
  22. println!("going left");
  23. self.left.as_mut().map(|n| (*n).add(elem));
  24. } else if elem > *x {
  25. match self.right {
  26. None => { self.right = Some(Box::new(Node::new())) }
  27. Some(_) => {}
  28. }
  29. println!("going right");
  30. self.right.as_mut().map(|n| (*n).add(elem));
  31. }
  32. }
  33. }
  34. }
  35. }
  36.  
  37. fn main() {
  38. let mut n = Node::new();
  39. n.add(20);
  40. n.add(10);
  41. n.add(1);
  42. n.add(5);
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement