学习安排根据《代码随想录》leetcode589、590
思路:
递归口诀:
1.确定递归函数参数与返回值类型
2.确定终止条件【边界条件】
3.确定前进条件【递归逻辑】
由官方对N叉树定义知:N个孩子结点以存储在vector容器里
则,取用孩子结点时不再是root->left 与 root->right!
class Solution {
public:
//确定递归函数的参数与返回值,因为这里是打印所以返回值类型为void
void traversal(Node*root,vector<int>&v)
{
//终止条件
if(root==NULL)return ;
//前进段即递归逻辑
v.push_back(root->val);
for(int i=0;i<root->children.size();i++)
traversal(root->children[i],v);
}
vector<int> preorder(Node* root)
{
//递归调用
vector<int>v;
traversal(root,v);
return v;
}
};
class Solution {
public:
//确定递归函数的参数与返回值,因为这里是打印所以返回值类型为void
void traversal(Node*root,vector<int>&v)
{
//终止条件
if(root==NULL)return ;
//前进段即递归逻辑
v.push_back(root->val);
for(int i=root->children.size()-1;i>=0;i--)
traversal(root->children[i],v);
}
vector<int> postorder(Node* root)
{
//递归调用
vector<int>v;
traversal(root,v);
reverse(v.begin(),v.end());
return v;
}
};
思路: