题解 | #二叉树的前序遍历#
二叉树的前序遍历
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) { vector<int>res; if(root==NULL) { return res; } stack<TreeNode*>s; s.push(root); while(!s.empty()) { TreeNode*node=s.top(); s.pop(); res.push_back(node->val); if(node->right) { s.push(node->right); } if(node->left) { s.push(node->left); } } return res; } }; 方法二:用递归法: class Solution { public: void process(vector<int>&res,TreeNode* root) { if(root==NULL) { return ; } res.push_back(root->val); process(res,root->left); process(res,root->right); } vector<int> preorderTraversal(TreeNode* root) { vector<int>res;//建立一个不需要知道元素个数的容器,也就是数组形式 process(res,root); return res; } };