题目:
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3},
1
\
2
/
3
return [1,3,2].
Note: Recursive solution is trivial, could you do it iteratively?
说明:1)下面有两种实现:递归(Recursive )与非递归(迭代iteratively)
2)时间复杂度 :O(n),空间复杂度:O(n)
实现:
一、递归
1 /** 2 * Definition for binary tree 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 /*recursive*/ 11 class Solution { 12 public: 13 vector<int> inorderTraversal(TreeNode *root) { 14 vector<int> root_vec; 15 vector<int> left_vec; 16 vector<int> right_vec; 17 if(root==nullptr) return root_vec; 18 if(root->left!=nullptr) left_vec=inorderTraversal(root->left); 19 root_vec.push_back(root->val); 20 if(root->right!=nullptr) right_vec=inorderTraversal(root->right); 21 left_vec.insert(left_vec.end(),root_vec.begin(),root_vec.end()); 22 left_vec.insert(left_vec.end(),right_vec.begin(),right_vec.end()); 23 return left_vec; 24 } 25 };