diff --git a/src/main/java/com/code/leet/entiy/Node.java b/src/main/java/com/code/leet/entiy/Node.java index ad14988..87c8ddb 100644 --- a/src/main/java/com/code/leet/entiy/Node.java +++ b/src/main/java/com/code/leet/entiy/Node.java @@ -9,6 +9,7 @@ public class Node { public Node random; public Node prev; public Node child; + public List children; public Node(int val) { this.val = val; diff --git a/src/main/java/leetcode/editor/cn/NAryTreeLevelOrderTraversal.java b/src/main/java/leetcode/editor/cn/NAryTreeLevelOrderTraversal.java new file mode 100644 index 0000000..9c6c5ea --- /dev/null +++ b/src/main/java/leetcode/editor/cn/NAryTreeLevelOrderTraversal.java @@ -0,0 +1,100 @@ +//给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。 +// +// 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。 +// +// +// +// 示例 1: +// +// +// +// +//输入:root = [1,null,3,2,4,null,5,6] +//输出:[[1],[3,2,4],[5,6]] +// +// +// 示例 2: +// +// +// +// +//输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12, +//null,13,null,null,14] +//输出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]] +// +// +// +// +// 提示: +// +// +// 树的高度不会超过 1000 +// 树的节点总数在 [0, 10^4] 之间 +// +// Related Topics 树 广度优先搜索 +// 👍 170 👎 0 + +package leetcode.editor.cn; + +import com.code.leet.entiy.Node; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Queue; + +//429:N 叉树的层序遍历 +class NAryTreeLevelOrderTraversal { + public static void main(String[] args) { + //测试代码 + Solution solution = new NAryTreeLevelOrderTraversal().new Solution(); + } + + //力扣代码 + //leetcode submit region begin(Prohibit modification and deletion) +/* +// Definition for a Node. +class Node { + public int val; + public List children; + + public Node() {} + + public Node(int _val) { + val = _val; + } + + public Node(int _val, List _children) { + val = _val; + children = _children; + } +}; +*/ + + class Solution { + public List> levelOrder(Node root) { + if (root == null) { + return new ArrayList<>(); + } + Queue queue = new LinkedList<>(); + queue.add(root); + List> result = new ArrayList<>(); + while (!queue.isEmpty()) { + int size = queue.size(); + List list = new ArrayList<>(); + for (int i = 0; i < size; i++) { + Node node = queue.poll(); + list.add(node.val); + List nodeList = node.children; + for (Node temp : nodeList) { + queue.add(temp); + } + } + result.add(list); + } + return result; + } + } +//leetcode submit region end(Prohibit modification and deletion) + +} \ No newline at end of file diff --git a/src/main/java/leetcode/editor/cn/NAryTreeLevelOrderTraversal.md b/src/main/java/leetcode/editor/cn/NAryTreeLevelOrderTraversal.md new file mode 100644 index 0000000..c011599 --- /dev/null +++ b/src/main/java/leetcode/editor/cn/NAryTreeLevelOrderTraversal.md @@ -0,0 +1,33 @@ +

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

+ +

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。

+ +

 

+ +

示例 1:

+ +

+ +
+输入:root = [1,null,3,2,4,null,5,6]
+输出:[[1],[3,2,4],[5,6]]
+
+ +

示例 2:

+ +

+ +
+输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
+输出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]
+
+ +

 

+ +

提示:

+ +
    +
  • 树的高度不会超过 1000
  • +
  • 树的节点总数在 [0, 10^4] 之间
  • +
+
Related Topics
  • 广度优先搜索
  • \n
  • 👍 170
  • 👎 0
  • \ No newline at end of file