概述
https://leetcode.com/problems/binary-tree-preorder-traversal/
递归法
class Solution {
public:
vector<int> ans;
vector<int> preorderTraversal(TreeNode* root) {
helper(root);
return ans;
}
void helper(TreeNode* root) {
if (!root) return;
ans.push_back(root->val);
helper(root->left);
helper(root->right);
}
};
迭代法
迭代法?迭代谁?我们肯定要迭代某种数据结构。
堆栈比较合适。
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> ans;
stack<TreeNode*> s;
s.push(root);
while (!s.empty()) {
auto n = s.top();
s.pop();
if (!n) continue;
ans.push_back(n->val);
s.push(n->right);
s.push(n->left);
}
return ans;
}
};