uacs2024

导航

leetcode429-N 叉树的层序遍历

429. N 叉树的层序遍历

 

 BFS非递归,自己写的。

/*
// Definition for a Node.
class Node {
public:
    int val;
    vector<Node*> children;

    Node() {}

    Node(int _val) {
        val = _val;
    }

    Node(int _val, vector<Node*> _children) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {
public:
    vector<vector<int>> levelOrder(Node* root) {
        if(root==nullptr) return {};
        queue<Node*> qqq;
        vector<vector<int>> res;
        qqq.push(root);
        while(!qqq.empty())
        {
            int size=qqq.size();
            vector<int> temp;
            for(int i=0;i<size;i++)
            {
                Node *t=qqq.front();
                qqq.pop();
                temp.push_back(t->val);
                for(Node* child:t->children)
                {
                    if(child!=nullptr) qqq.push(child); 
                }
            }
            res.push_back(temp);
        }
        return res;
    }
};

DFS递归,看了一眼别人的代码写的

/*
// Definition for a Node.
class Node {
public:
    int val;
    vector<Node*> children;

    Node() {}

    Node(int _val) {
        val = _val;
    }

    Node(int _val, vector<Node*> _children) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {
public:
    vector<vector<int>> res;
    void dfs(Node* root,int index)
    {
        if(root==nullptr) return;
        if(index>=res.size())  res.push_back(vector<int>());
        res[index].push_back(root->val);
        for(Node* child:root->children)
        {
            dfs(child,index+1);
        }
    }
    vector<vector<int>> levelOrder(Node* root)
    {
        dfs(root,0);
        return res;
    }
};

 

posted on 2022-10-31 16:40  ᶜʸᵃⁿ  阅读(10)  评论(0编辑  收藏  举报