算法描述:
Given a binary tree, return the preorder traversal of its nodes' values.
Example:
Input:[1,null,2,3]
1 \ 2 / 3 Output:[1,2,3]
Follow up: Recursive solution is trivial, could you do it iteratively?
解题思路:先根非递归遍历。
vector<int> preorderTraversal(TreeNode* root) { vector<int> results; stack<TreeNode*> stk; while(root!=nullptr || !stk.empty()){ while(root!=nullptr){ stk.push(root); results.push_back(root->val); root=root->left; } TreeNode* temp = stk.top(); stk.pop(); if(temp->right!=nullptr) root = temp->right; } return results; }