题解 | #二叉树的前序遍历#
二叉树的前序遍历
https://www.nowcoder.com/practice/5e2135f4d2b14eb8a5b06fab4c938635
- 递归解法
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
// write code here
vector<int> ans;
pre(root, ans);
return ans;
}
void pre(TreeNode* root, vector<int> &res) {
if(!root) return ;
res.push_back(root->val);
pre(root->left, res);
pre(root->right, res);
};
- 迭代解法
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
// write code here
vector<int> ans;
if(root == NULL) return ans;
stack<TreeNode*> st;
st.push(root);
while(!st.empty()) {
TreeNode* cc = st.top();
st.pop();
ans.push_back(cc->val);
if(cc->right) st.push(cc->right);
if(cc->left) st.push(cc->left);
}
return ans;
}
};