美文网首页
leetcode--429--N叉树的层序遍历

leetcode--429--N叉树的层序遍历

作者: minningl | 来源:发表于2020-11-13 00:05 被阅读0次

题目:
给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。

例如,给定一个 3叉树 :

image.png

返回其层序遍历:

[
     [1],
     [3,2,4],
     [5,6]
]

说明:

树的深度不会超过 1000。
树的节点总数不会超过 5000。

链接:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal

思路:
1、采用BFS的思路,分层记录每层的节点信息,保存下来

Python代码:

"""
# Definition for a Node.
class Node(object):
    def __init__(self, val=None, children=None):
        self.val = val
        self.children = children
"""

class Solution(object):

    def __init__(self):
        self.ret = []

    def bfs(self, root):
        if not root:
            return None
        quenu = [root]
        
        while quenu:
            nex = []
            tmp = []
            for node in quenu:
                tmp.append(node.val)
                for child in node.children:
                    nex.append(child)
            quenu = nex
            self.ret.append(tmp)

    def levelOrder(self, root):
        """
        :type root: Node
        :rtype: List[List[int]]
        """
        
        self.bfs(root)

        return self.ret

C++代码:

/*
// 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>> ret;

    vector<vector<int>> bfs(Node* root){
        if (root == nullptr) {
            return ret;
        }
        vector<Node*> queue;
        queue.push_back(root);

        while(queue.size()>0){
            vector<int> tmp = {};
            vector<Node*> nex = {};
            for (auto node:queue){
                tmp.push_back(node->val);
                for (auto child : node->children){
                    nex.push_back(child);
                }
            }
            ret.push_back(tmp);
            queue.swap(nex);
        }

        return ret;
    }

    vector<vector<int>> levelOrder(Node* root) {
        bfs(root);
        return ret;
    }
};

相关文章

  • 多叉树层次遍历

    给定一个N叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。 例如,给定一个 3叉树 : 返回其层序遍历:...

  • leecode刷题(25)-- 二叉树的层序遍历

    leecode刷题(25)-- 二叉树的层序遍历 二叉树的层序遍历 给定一个二叉树,返回其按层次遍历的节点值。 (...

  • LeetCode-102-二叉树的层序遍历

    LeetCode-102-二叉树的层序遍历 102. 二叉树的层序遍历[https://leetcode-cn.c...

  • 429-N叉树的层序遍历

    N叉树的层序遍历 题目 给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。 例如,给定一个3...

  • leetcode--429--N叉树的层序遍历

    题目:给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。 例如,给定一个 3叉树 : 返回其...

  • 树的遍历

    N叉树的遍历 N叉树的前序遍历 N叉树的后序遍历 N叉树的层序遍历 二叉树 鉴于递归法遍历比较简单,就不重复写了 ...

  • 数据结构与算法之二叉树遍历(七)

    目录 前序遍历中序遍历后序遍历层序遍历遍历方式的选择条件根据遍历结果重构二叉树翻转二叉树计算二叉树的高度判断一棵树...

  • 二叉树相关算法

    二叉树定义 前序遍历(中序遍历、后续遍历只需要调整append的顺序即可) 层序遍历 二叉树的最大深度 对称二叉树...

  • N叉树的层序遍历

    给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。 例如,给定一个 3叉树 : 返回其层序遍...

  • LeetCode - 429. N叉树的层序遍历

    给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。 例如,给定一个 3叉树 : 返回其层序遍...

网友评论

      本文标题:leetcode--429--N叉树的层序遍历

      本文链接:https://www.haomeiwen.com/subject/ilimbktx.html