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

返回其层序遍历:
[
[1],
[3,2,4],
[5,6]
]
说明:
树的深度不会超过 1000。
树的节点总数不会超过 5000。
代码实现:
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> children;
public Node() {}
public Node(int _val,List<Node> _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
List<List<Integer>> result = new ArrayList<List<Integer>>();
public List<List<Integer>> levelOrder(Node root) {
if (root == null) return result;
LinkedList<Node> queue = new LinkedList<Node>();
// 1:根结点进入队列
queue.offer(root);
Node tmpNode = null;
// 2:若队列非空,循环执行
while (! queue.isEmpty()) {
List<Integer> tmpList = new ArrayList<Integer>();
//3. 获取当前层的节点数.
int size = queue.size();
// 4. 遍历当前层的节点
for (int i = 0; i < size; i++) {
// 5. 队首出队并将value加入子list
tmpNode = queue.poll();
tmpList.add(tmpNode.val);
// 6. 将非空子树加入queue
for (Node node : tmpNode.children) {
queue.offer(node);
}
}
// 添加一层
result.add(tmpList);
}
return result;
}
}
网友评论