144 Binary Tree Preorder Traversal(二叉树先序遍历Medium)
题目意思:二叉树先序遍历,结果存在vector<int>中
解题思路:1.递归(题目中说用递归做没什么意义,我也就贴贴代码吧)
2.迭代
迭代实现:
1 class Solution { 2 public: 3 vector<int> preorderTraversal(TreeNode* root) { 4 vector<int> ans; 5 if(root){ 6 TreeNode* temp; 7 stack<TreeNode*> s; //利用栈,每次打印栈顶,然后将栈顶弹出 8 s.push(root); 9 while(!s.empty()){ 10 temp=s.top(); 11 ans.push_back(temp->val); 12 s.pop(); 13 if(temp->right)s.push(temp->right); //弹出的栈顶存在temp中,如果有右节点,先放右节点,再放左节点,这样左节点就在上面 14 if(temp->left)s.push(temp->left); 15 } 16 } 17 return ans; 18 } 19 };
递归实现:
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 private: 12 vector<int> ans; 13 public: 14 vector<int> preorderTraversal(TreeNode* root) { 15 if(root){ 16 ans.push_back(root->val); 17 preorderTraversal(root->left); 18 preorderTraversal(root->right); 19 } 20 return ans; 21 } 22 };