二叉树遍历:
- 前序遍历:中左右
- 中序遍历:左中右
- 后序遍历:左右中
思路:二叉树的前中后遍历都可以用递归来解决。
解决:注意前中后三种遍历的顺序就可以。
代码:
1.前序遍历中左右
class Solution {
public:
void traversal(TreeNode* root, vector<int>& v){
if(root==NULL) return ;
v.push_back(root->val);
traversal(root->left,v);
traversal(root->right,v);
}
vector<int> preorderTraversal(TreeNode* root) {
vector<int> v;
traversal(root,v);
return v;
}
};
2.中序遍历左中右
class Solution {
public:
void traversal(TreeNode* root, vector<int>& v){
if(root==NULL) return ;
traversal(root->left,v);
v.push_back(root->val);
traversal(root->right,v);
}
vector<int> inorderTraversal(TreeNode* root) {
vector<int> v;
traversal(root,v);
return v;
}
};
3.后序遍历左右中
class Solution {
public:
void traversal(TreeNode* root, vector<int>& v){
if(root==NULL) return ;
traversal(root->left,v);
traversal(root->right,v);
v.push_back(root->val);
}
vector<int> postorderTraversal(TreeNode* root) {
vector<int> v;
traversal(root,v);
return v;
}
};