没什么好说的,就是一道中序遍历题。  当然,使用了递归,效率肯定就那样,那些效率高的,都是通过迭代写的。

 1 class Solution {
 2 public:
 3     vector<int> inorderTraversal(TreeNode* root) {
 4         vector<int> v;
 5         if(root!=NULL){
 6             vector<int> v1=inorderTraversal(root->left);
 7             copy(v1.begin(),v1.end(),back_inserter(v));
 8             v.push_back(root->val);
 9             v1=inorderTraversal(root->right);
10             copy(v1.begin(),v1.end(),back_inserter(v));
11         }
12         return v;
13     }
14 };

熟悉一下STL的copy和back_inserter():

1 template <class InputIterator, class OutputIterator>
2 OutputIterator copy (InputIterator first, InputIterator last,OutputIterator result);

copy:将 [ first , last ) 的内容拷贝到result中。

1 template <class Container>
2 back_insert_iterator<Container> back_inserter (Container& x);

back_inserter:返回一个指向x的尾部插入迭代器,作为输入迭代器,用于输入。

02-01 03:43