原题 Binary Tree Preorder Traversal
没什么好说的... 二叉树的前序遍历,当然如果我一样忘记了什么是前序遍历的.. 啊啊..
总之,前序、中序、后序,是按照根的位置来决定的,根首先访问,是前序。
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<int> preorderTraversal(TreeNode *root) { vector<int> r; if (root == NULL) return r; r.push_back(root->val); if (root->left != NULL) { vector<int> v = preorderTraversal(root->left); r.reserve(r.size() + distance(v.begin(),v.end())); r.insert(r.end(),v.begin(),v.end()); } if (root->right != NULL) { vector<int> v = preorderTraversal(root->right); r.reserve(r.size() + distance(v.begin(),v.end())); r.insert(r.end(),v.begin(),v.end()); } return r; } };
另外这样写,有大量的Vector复制操作,太浪费了,其实一个全局的int数据就搞定了,C++这样写还是有点麻烦。