标签:efi 提示 poll integer 解答 队列 turn link lin
题目:
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示:
节点总数 <= 1000
解答:
层次遍历的过程中,当前层确定出下一层,所以在遍历当前层的同时找出下一层所有节点;为了避免不同层的节点在同一个队列里面混淆,遍历当前节点时,用临时队列将下一层节点存起来,然后再赋予第一层队列;
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 class Solution { 11 public List<List<Integer>> levelOrder(TreeNode root) { 12 if(root == null){ 13 return new ArrayList(); 14 } 15 List<List<Integer>> ret = new ArrayList<>(); 16 Queue<TreeNode> current = new LinkedList<>(); 17 current.add(root); 18 while(!current.isEmpty()){ 19 List<Integer> list = new ArrayList<>(); 20 Queue<TreeNode> next = new LinkedList<>(); 21 while(!current.isEmpty()){ 22 TreeNode node = current.poll(); 23 if(node.left != null){ 24 next.add(node.left); 25 } 26 if(node.right != null){ 27 next.add(node.right); 28 } 29 list.add(node.val); 30 } 31 current = next; 32 ret.add(list); 33 } 34 return ret; 35 } 36 }
标签:efi 提示 poll integer 解答 队列 turn link lin
原文地址:https://www.cnblogs.com/heaveneleven/p/12745545.html