Skip to main content

144. Binary Tree Preorder Traversal

https://leetcode.com/problems/binary-tree-preorder-traversal

Python

class Solution:
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
return self.travel([], root)

def travel(self, result: List[int], root: Optional[TreeNode]):
if not root:
return

result.append(root.val)
self.travel(result, root.left)
self.travel(result, root.right)
return result

Rust

use std::rc::Rc;
use std::cell::RefCell;
impl Solution {
pub fn preorder_traversal(root: Option<Rc<RefCell<TreeNode>>>) -> Vec<i32> {
fn preorder(node: &Option<Rc<RefCell<TreeNode>>>, result: &mut Vec<i32>) {
if let Some(node) = node {
result.push(node.borrow().val);
preorder(&node.borrow().left, result);
preorder(&node.borrow().right, result);
}
}
let mut result = vec![];
preorder(&root, &mut result);
result
}
}