struct Node { key:i32, left:Option>, right:Option> } fn sample()->Node { Node {key:5,left:Some(Box::new(Node {key:3,left:None,right:None})),right:Some(Box::new(Node {key:7,left:None,right:None}))} } fn show(n: &Node, depth: usize) { { let mut line = " ".repeat(depth); line.push_str(&n.key.to_string()); println!("{line}"); } if let Some(left) = &n.left { show(left, depth + 1); } if let Some(right) = &n.right { show(right, depth + 1); } } fn main() {show(&sample(),0);}