Skip to content

Instantly share code, notes, and snippets.

@fatihgokce
Last active December 9, 2022 23:51
Show Gist options
  • Save fatihgokce/8a83e7242af50ee6efd35f672f9f8db7 to your computer and use it in GitHub Desktop.
Save fatihgokce/8a83e7242af50ee6efd35f672f9f8db7 to your computer and use it in GitHub Desktop.
struct Node {
data: i32,
left: Option<Box<Node>>,
right: Option<Box<Node>>,
}
fn add(tree:&mut Box<Node>, x: i32){
if tree.data==x{
return;
}
let t=tree.data;
let target_node = if x < t { &mut tree.left } else { &mut tree.right };
match target_node {
Some(node)=>add(node, x),
None=>{
let new_node=Node{data:x,left:None,right:None};
let boxed=Some(Box::new(new_node));
*target_node=boxed;
}
}
}
fn travel(tree: &Box<Node>) {
let l=tree.left.as_ref();
if let Some(t)=l{
travel(t);
}
println!("{}",tree.data);
let r=tree.right.as_ref();
if let Some(t)=r{
travel(t);
}
}
fn main() {
let node=Node{data:12,left:None,right:None};
let mut tree=Box::new(node);
let b=&mut tree;
add(b, 200);
add(b, 190);
add(b, 213);
add(b, 56);
add(b, 24);
add(b, 18);
add(b, 27);
add(b, 28);
travel(&tree);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment