/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型vector */ void process(vector<int>& ans,TreeNode* root){ if(root==nullptr){ return; } stack<TreeNode*> stack;//创建一个栈,将元素进栈, stack.push(root); while(!stack.empty()){ TreeNode* cur=stack.top(); stack.pop(); ans.push_back(cur->val); if(cur->right!=nullptr){//注意一定是先右,栈是先入后出 stack.push(cur->right); } if(cur->left!=nullptr){ stack.push(cur->left); } } } vector<int> preorderTraversal(TreeNode* root) { vector<int> ans; process(ans,root); return ans; } };