Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::cmp::Ordering::*;
- type Link<T> = Option<Box<Node<T>>>;
- #[derive(Debug)]
- struct Node<T: Ord> {
- value: T,
- right: Link<T>,
- left: Link<T>,
- }
- impl<T: Ord> Node<T> {
- fn new(value: T) -> Self {
- Node {
- value: value,
- right: None,
- left: None
- }
- }
- fn add(&mut self, value: T) {
- let next = match self.value.cmp(&value) {
- Less => {
- &mut self.left
- },
- Greater => {
- &mut self.right
- },
- Equal => {panic!()},
- };
- if let &mut Some(ref mut n) = next {
- n.add(value);
- } else {
- *next = Some(Box::new(Node::new(value)));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment