每日简短一刷,保持手感系列
题目:从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:给定二叉树: [3,9,20,null,null,15,7],
返回:[3,9,20,15,7]
根据题意就是一个广度优先搜索即 BFS,那么 BFS 常用队列来实现。
所以我们直接遍历二叉树,利用队列来存储节点,根据队列先入先出特性来即可完成按层且从左到右的顺序打印。
没什么花头,直接看代码,应该很好理解。
/**

 * Definition for a binary tree node.

 * public class TreeNode {

 *     int val;

 *     TreeNode left;

 *     TreeNode right;

 *     TreeNode(int x) { val = x; }

 * }

 */

classSolution
{

publicint
[] levelOrder(TreeNode root) {

if
 (root == 
null
) {

returnnewint
[
0
];

        }

        Queue<TreeNode> nodeQueue = 
new
 LinkedList();

        nodeQueue.add(root);

        List<Integer> list = 
new
 ArrayList();

while
 (!nodeQueue.isEmpty()) {

            TreeNode node = nodeQueue.poll();

            list.add(node.val);

if
 (node.left != 
null
) {

                nodeQueue.add(node.left);

            }

if
 (node.right != 
null
) {

                nodeQueue.add(node.right);

            }

        }

int
[] res = 
newint
[list.size()];

for
(
int
 i = 
0
; i < list.size(); i++) {

            res[i] = list.get(i);

        }

return
 res;

    }

}

时间复杂度 O(n) 空间复杂度 O(n)

一道中等难度题,不过能想到用队列来实现的话,应该不是很难
点击阅读原文即可练习。
添加微信:yes_oba,备注算法,即可进算法学习群。
继续阅读
阅读原文