3. What is the output of the following Rust code performing level order traversal?
use std::collections::VecDeque;
struct TreeNode {
val: i32,
left: Option,
right: Option,
}
fn level_order(root: Option) -> Vec<i32> {
let mut result = Vec::new();
let mut queue = VecDeque::new();
if let Some(node) = root {
queue.push_back(node);
}
while let Some(node) = queue.pop_front() {
result.push(node.val);
if let Some(left) = node.left {
queue.push_back(left);
}
if let Some(right) = node.right {
queue.push_back(right);
}
}
result
}
fn main() {
let root = Some(Box::new(TreeNode {
val: 1,
left: Some(Box::new(TreeNode { val: 2, left: None, right: None })),
right: Some(Box::new(TreeNode { val: 3, left: None, right: None })),
}));
let output = level_order(root);
println!("{:?}", output);
}