一、题目
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
二、思路
使用链表,将同一层的放在链表中
三、实现
public int[] levelOrder(TreeNode root) {
if (root == null) {
return new int[]{};
}
LinkedList<TreeNode> list = new LinkedList<>();
list.add(root);
List<Integer> res = new ArrayList<>();
while (!list.isEmpty()) {
int size = list.size();
for (int i = size - 1; i >= 0; i--) {
TreeNode node = list.pollFirst();
res.add(node.val);
if (node.left != null) {
list.addLast(node.left);
}
if (node.right != null) {
list.addLast(node.right);
}
}
}
int[] array = new int[res.size()];
for (int i = 0; i < res.size(); i++) {
array[i] = res.get(i);
}
return array;
}