Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. pub struct Node<T> {
  2. value: T,
  3. left: Option<Box<Node<T>>>,
  4. right: Option<Box<Node<T>>>,
  5. }
  6.  
  7. pub struct Tree<T> {
  8. root: Option<Box<Node<T>>>,
  9. }
  10.  
  11. impl<T: Ord> Tree<T> {
  12. /// Creates an empty tree
  13. pub fn new() -> Self {
  14. Tree {root: None }
  15.  
  16. }
  17.  
  18. // search the tree
  19. pub fn find(&self, key: &T) -> bool {
  20. let root_node = &self.root; // root is Option
  21.  
  22. match *root_node {
  23. Some(ref node) => {
  24.  
  25. if node.value == *key {
  26. return true;
  27. }
  28.  
  29. let target_node = if *key < node.value {&node.left} else {&node.right};
  30.  
  31. match *target_node {
  32. Some(sub_node) => sub_node.find(key),
  33. None => {return false;}
  34. }
  35. },
  36. None => return false
  37. }
  38. }
  39. }
  40.  
  41. fn main() {
  42.  
  43. let mut mytree: Tree<i32> = Tree::new();
  44.  
  45. let node1 = Node {
  46. value: 100,
  47. left: None,
  48. right: None,
  49. };
  50. let boxed_node1 = Some(Box::new(node1));
  51.  
  52. let root = Node {
  53. value: 200,
  54. left: boxed_node1,
  55. right: None,
  56. };
  57. let boxed_root = Some(Box::new(root));
  58. let mytree = Tree { root: boxed_root};
  59.  
  60. let res = mytree.find(&100);
  61. }
  62.  
  63. error: no method named `find` found for type `Box<Node<T>>` in the current scope
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement