3. Given the following Rust code snippet for boundary traversal, what will be the output printed for the tree below?
Tree structure:
```
1
/ \
2 3
/ \ \
4 5 6
/ \ /
7 8 9
```
Code snippet:
fn main() {
let root = Some(Box::new(Node {
val: 1,
left: Some(Box::new(Node {
val: 2,
left: Some(Box::new(Node { val: 4, left: None, right: None })),
right: Some(Box::new(Node {
val: 5,
left: Some(Box::new(Node { val: 7, left: None, right: None })),
right: Some(Box::new(Node { val: 8, left: None, right: None })),
})),
})),
right: Some(Box::new(Node {
val: 3,
left: None,
right: Some(Box::new(Node {
val: 6,
left: Some(Box::new(Node { val: 9, left: None, right: None })),
right: None,
})),
})),
}));
let result = boundary_traversal(&root);
println!("{:?}", result);
}