题目描述:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
代码思路:前序遍历是指访问二叉树的顺序为:根节点->左子树->右子树
代码实现:
方法一:(迭代)
class Solution {
public:
vector preorderTraversal(TreeNode* root) {
vector result;
if(!root)
return result;
stack<TreeNode*> S;
S.push(root);
while(!S.empty())
{
root=S.top();
S.pop();
result.push_back(root->val);
if(root->right!=NULL)
S.push(root->right);
if(root->left!=NULL)
S.push(root->left);
}
return result;
}
};
方法二:(递归)
class Solution {
public:
void preorder(TreeNode *root, vector &res) {
if (root == nullptr) {
return;
}
res.push_back(root->val);
preorder(root->left, res);
preorder(root->right, res);
}
vector preorderTraversal(TreeNode *root) {
vector res;
preorder(root, res);
return res;
}
};