1. 程式人生 > 實用技巧 >binary-tree-preorder-traversal 迭代法求解二叉樹前序遍歷

binary-tree-preorder-traversal 迭代法求解二叉樹前序遍歷

題目:

求給定的二叉樹的前序遍歷。 例如: 給定的二叉樹為{1,#,2,3}, 1  2  /  3 返回:[1,2,3]

程式碼:

 1 /**
 2  * struct TreeNode {
 3  *    int val;
 4  *    struct TreeNode *left;
 5  *    struct TreeNode *right;
 6  * };
 7  */
 8 
 9 class Solution {
10 public:
11     /**
12      * 
13      * @param root TreeNode類 
14      * @return int整型vector
15 */ 16 vector<int> preorderTraversal(TreeNode* root) { 17 vector<int> list; 18 stack<TreeNode*> st; 19 if(root == NULL) 20 return list; 21 st.push(root); 22 while( !st.empty()) { 23 TreeNode* temp = st.top();
24 st.pop(); 25 list.push_back(temp->val); 26 if(temp->right != NULL) 27 st.push(temp->right); 28 if(temp->left != NULL) 29 st.push(temp->left); 30 } 31 return list; 32 } 33 };

我的筆記:

  利用資料結構棧來求解即可。