题目描述
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
返回:
提示:
节点总数 <= 1000
题目链接
Leetcode
题目解答
层序遍历(BFS),借助队列存放当前层的节点,然后当前层节点依次出队,同时把该节点的非空子节点依次加入到队列中,队列所有元素都出队后,遍历结束。
时间复杂度:$O(n)$ 空间复杂度:$O(n)$
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
class Solution { public int[] levelOrder(TreeNode root) { if (root == null) return new int[0]; List<Integer> list = new ArrayList<>(); LinkedList<TreeNode> queue = new LinkedList<>(); queue.add(root); while(!queue.isEmpty()) { TreeNode node = queue.poll(); list.add(node.val); if (node.left != null) { queue.add(node.left); } if (node.right != null) { queue.add(node.right); } } int[] res = new int[list.size()]; for (int i = 0; i < res.length; i++) { res[i] = list.get(i); } return res; } }
|
执行用时:1 ms, 在所有 Java 提交中击败了99.77%的用户
内存消耗:38.2 MB, 在所有 Java 提交中击败了92.86%的用户
-------------本文结束 感谢您的阅读-------------
文章对您有帮助,可以打赏一杯咖啡,鼓励我继续创作!