144 Binary Tree Preorder Traversal¶
Given a binary tree, return the preorder traversal of its nodes’ values.
Example:
Output: [1,2,3] Follow up: Recursive solution is trivial, could you do it iteratively?
Solution 1: Recursion¶
Time complexity: \(O(n)\) Space complexity: \(O(n)\)
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> ans;
function<void(TreeNode*)> preorder = [&](TreeNode* n) {
if (!n) return;
ans.push_back(n->val);
preorder(n->left);
preorder(n->right);
};
preorder(root);
return ans;
}
};
Solution 2: Stack¶
Time complexity: \(O(n)\) Space complexity: \(O(n)\)