Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // A simple binary tree built with structs
- #[derive(Clone)]
- pub struct Tree<'a, T: PartialOrd + Clone> {
- left: Option<Box<Tree<'a, T>>>,
- right: Option<Box<Tree<'a, T>>>,
- pub value: T,
- id: &'a u32,
- }
- impl<'a, T: PartialOrd + Clone> Tree<'a, T> {
- pub fn new(value: T) -> Tree<'a, T> {
- let tree = Tree {
- left: None,
- right: None,
- value: value,
- id: &15,
- };
- return tree;
- }
- // Finds closeset node to the value
- fn find_closest(&self, value: T) -> &Tree<'a, T> {
- if value == self.value {
- return self;
- }
- let sub_tree = if value < self.value {
- self.left.clone()
- } else {
- self.right.clone()
- };
- match sub_tree {
- Some(s) => s.find_closest(value),
- None => self,
- }
- }
- pub fn insert(&mut self, value: T) -> &mut Tree<'a, T> {
- let node = self.find_closest(value.clone());
- if value == node.value {
- return self;
- } else if value < node.value {
- node.left = None
- }
- return self;
- }
- }
- fn main () {
- }
Add Comment
Please, Sign In to add comment