0
点赞
收藏
分享

微信扫一扫

二叉树递归之练习【1】

seuleyang 2022-03-26 阅读 72

学习安排根据《代码随想录》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;
    }
};

思路:

 

举报

相关推荐

0 条评论