Guest User

Untitled

a guest
May 20th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. // A simple binary tree built with structs
  2. #[derive(Clone)]
  3. pub struct Tree<'a, T: PartialOrd + Clone> {
  4. left: Option<Box<Tree<'a, T>>>,
  5. right: Option<Box<Tree<'a, T>>>,
  6. pub value: T,
  7. id: &'a u32,
  8. }
  9.  
  10. impl<'a, T: PartialOrd + Clone> Tree<'a, T> {
  11. pub fn new(value: T) -> Tree<'a, T> {
  12. let tree = Tree {
  13. left: None,
  14. right: None,
  15. value: value,
  16. id: &15,
  17. };
  18. return tree;
  19. }
  20.  
  21. // Finds closeset node to the value
  22. fn find_closest(&self, value: T) -> &Tree<'a, T> {
  23. if value == self.value {
  24. return self;
  25. }
  26. let sub_tree = if value < self.value {
  27. self.left.clone()
  28. } else {
  29. self.right.clone()
  30. };
  31.  
  32. match sub_tree {
  33. Some(s) => s.find_closest(value),
  34. None => self,
  35. }
  36. }
  37.  
  38. pub fn insert(&mut self, value: T) -> &mut Tree<'a, T> {
  39. let node = self.find_closest(value.clone());
  40. if value == node.value {
  41. return self;
  42. } else if value < node.value {
  43. node.left = None
  44. }
  45. return self;
  46. }
  47. }
  48.  
  49. fn main () {
  50.  
  51. }
Add Comment
Please, Sign In to add comment