Skip to content

Instantly share code, notes, and snippets.

@stmtk1
Created November 27, 2019 12:41
Show Gist options
  • Save stmtk1/bf4941d80dba796bb861b378f60a2745 to your computer and use it in GitHub Desktop.
Save stmtk1/bf4941d80dba796bb861b378f60a2745 to your computer and use it in GitHub Desktop.
use std::rc::Rc;
use std::cell::RefCell;
struct BinTree {
value: u64,
left: Option<Rc<RefCell<BinTree>>>,
right: Option<Rc<RefCell<BinTree>>>,
}
impl BinTree {
fn new(value: u64) -> BinTree {
BinTree {
value,
left: None,
right: None,
}
}
fn insert(&mut self, value: u64) {
if self.value < value {
match &mut self.left {
None => {
self.left = Some(Rc::new(RefCell::new(BinTree::new(value))));
},
Some(left) => {
(*left).borrow_mut().insert(value);
}
}
} else {
match &mut self.right {
None => {
self.right = Some(Rc::new(RefCell::new(BinTree::new(value))));
},
Some(right) => {
(*right).borrow_mut().insert(value);
}
}
}
}
}
fn main() {
let mut tree = BinTree::new(100);
tree.insert(200);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment