/*方法一:递归前序遍历。*/
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> res;
preorder(root, res);
return res;
}
void preorder(TreeNode *root, vector<int> &res){
if(root == nullptr) return;
res.push_back(root->val);
if(root->left) preorder(root->left, res);
if(root->right) preorder(root->right, res);
}
};
/*方法二:利用栈,采用迭代进行前序遍历。*/
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> res;
stack<TreeNode*> s;
s.push(root);
while(!s.empty()){
TreeNode *p = s.top();
s.pop();
if(p != nullptr){
res.push_back(p->val);
if(p->right != nullptr) s.push(p->right);
if(p->left != nullptr) s.push(p->left);
}
}
return res;
}
};
LeetCode之Binary Tree Preorder Traversal
最新推荐文章于 2024-05-30 07:40:02 发布