二叉树的前序遍历
给定一个二叉树,返回它的前序 遍历。
示例:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal/
递归:
代码:
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> ret;
preorderTree(root,ret);
return ret;
}
void preorderTree(TreeNode* &root,vector<int> &ret){
if(root==nullptr) return;
ret.emplace_back(root->val);
preorderTree(root->left,ret);
preorderTree(root->right,ret);
}
};
复杂度分析
时间复杂度:O(n)
空间复杂度:O(n)
迭代:
代码:
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> res;
stack<TreeNode*> stk;
TreeNode* cur = root;
while(cur || stk.size()) {
while(cur) {
stk.push(cur);
res.push_back(cur->val);
cur = cur->left;
}
cur = stk.top();
stk.pop();
cur = cur->right;
}
return res;
}
};