class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int>res;
Traversal(root,res);
return res;
}
void Traversal(TreeNode*root,vector<int>&res)
{
if(!root) return ;
res.push_back(root->val);
Traversal(root->left,res);
Traversal(root->right,res);
}
};
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
vector<int>res;
Traversal(root,res);
return res;
}
void Traversal(TreeNode*root,vector<int>&res)
{
if(!root) return ;
Traversal(root->left,res);
Traversal(root->right,res);
res.push_back(root->val);
}
};
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int>res;
Traversal(root,res);
return res;
}
void Traversal(TreeNode*root,vector<int>&res)
{
if(!root) return ;
Traversal(root->left,res);
res.push_back(root->val);
Traversal(root->right,res);
}
};
然后上小结:
1.要确定递归函数的参数以及返回值
2.跳出递归的条件
3.递归要进行的操作
以上述的前序遍历为例子
1.
void traversal(TreeNode* cur, vector<int>& vec)
if(!root) return ;
res.push_back(root->val);//中
Traversal(root->left,res);//左
Traversal(root->right,res);//右
要注意这是递归函数里面要准备的内容!!!不要要写到主函数里面去了
所以只要后面把递归函数操作更改一下就行了