/*
// Definition for a Node.
class Node {
public int val;
public List<Node> children;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
};
*/classSolution{public List<List<Integer>>levelOrder(Node root){
List<List<Integer>> result =newArrayList<>();if(root == null)return result;
Queue<Node> queue =newLinkedList<>();//采用链表的存储结构形成队列
queue.add(root);while(!queue.isEmpty()){
List<Integer> level =newArrayList<>();//设立一个专门存储数值的list用于返回使用int size = queue.size();//统计当前同层的元素个数for(int i =0; i < size; i++){
Node node = queue.poll();//逐一取出元素,将值输入到返回数组,并将孩子节点放到队列中
level.add(node.val);
queue.addAll(node.children);}
result.add(level);}return result;}}
"""
# Definition for a Node.
class Node(object):
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""classSolution(object):deflevelOrder(self, root):"""
:type root: Node
:rtype: List[List[int]]
"""ifnot root:return[]
res =list()
queue =list()
queue.append(root)while queue:
level =list()print(queue)for _ inrange(len(queue)):
node = queue.pop(0)
level.append(node.val)
queue += node.children
res.append(level)return res
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> children;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, List<Node> _children) {
val = _val;
children = _children;
}
};
*/classSolution{private List<List<Integer>> result =newArrayList<>();//一个空列表public List<List<Integer>>levelOrder(Node root){if(root != null)helper(root,0);return result;}privatevoidhelper(Node node,int level){if(result.size()== level){
result.add(newArrayList<>());}
result.get(level).add(node.val);for(Node child : node.children){//增强for循环helper(child,level +1);}}}
"""
# Definition for a Node.
class Node(object):
def __init__(self, val=None, children=None):
self.val = val
self.children = children
"""classSolution(object):deflevelOrder(self, root):"""
:type root: Node
:rtype: List[List[int]]
"""ifnot root:return[]defhelper(node,level):iflen(result)== level://通过标志当前层数控制递归函数
result.append([])
result[level].append(node.val)for child in node.children:
helper(child,level+1)//每一个孩子调用函数时都指定了相应的行数,所以将利用于栈操作的递归同样使用在队列中
result =list()
helper(root,0)return result