https://leetcode.com/problems/binary-tree-preorder-traversal/description/
Solution 1. Recursion
vector<int> preorderTraversal(TreeNode* root) {
vector<int> res;
preOrder(root, res);
return res;
}
void preOrder(TreeNode* node, vector<int>& res) {
if(!node) return;
res.push_back(node->val);
preOrder(node->left, res);
preOrder(node->right, res);
}
Solution 2. Iteration
vector<int> preorderTraversal(TreeNode* root) {
if(!root) return {};
vector<int> res;
TreeNode* node;
stack<TreeNode*> st;
st.push(root);
while(!st.empty()) {
node = st.top();
res.push_back(node->val);
st.pop();
if(node->right) st.push(node->right);
if(node->left) st.push(node->left);
}
return res;
}
No comments:
Post a Comment