一:题目
二:上码
1:递归
class Solution {
public:void preorder(TreeNode* root,vector<int>&v ) {if(root == NULL) return;v.push_back(root->val);preorder(root->left,v);preorder(root->right,v);}vector<int> preorderTraversal(TreeNode* root) {vector<int> ans;preorder(root,ans);return ans;}
};
2:迭代遍历
class Solution {
public:vector<int> preorderTraversal(TreeNode* root) {/**思路:1.迭代遍历2.这里我们用到了栈,其实递归遍历中的递归本质就是栈(操作系统层面上的),我们在递归的时候当遇到递归终止条件的时候,是一层一层往回返,那这的话,就是栈的先进后出特性.3.迭代遍历,中我们先将根节点入队,然后将其出队将其出队的结点的右节点先入队,然后再将左节点入队,(这是为了保证出队的时候我们的顺序是先序的顺序 中左右)**/vector<int> ans;stack<TreeNode*>st;if(root != NULL)st.push(root);while(!st.empty()) {TreeNode* value = st.top();ans.push_back(value->val);st.pop();if(value->right) st.push(value->right);if(value->left) st.push(value->left);}return ans;}
};
如有疑问请留言!!! 一个人可以走的很快 团结协作才能走的更远!!!!!!!!