/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ #include <stack> #include <vector> class Solution { public: /** * * @param root TreeNode类 * @return int整型vector */ vector<int> preorderTraversal(TreeNode* root) { // write code here //利用栈的先进后出,先进右子树再进左子树,就能按顺序弹出左子树、右子树 vector<int> result; if(root == nullptr) return result; stack<TreeNode*> st; st.push(root); while(!st.empty()){ TreeNode *out = st.top(); st.pop(); result.push_back(out->val); if(out->right != nullptr){ st.push(out->right); } if(out->left != nullptr){ st.push(out->left); } } return result; } };