算法描述:
- 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;
- }
来源: http://www.bubuko.com/infodetail-2946107.html