剑指 Offer 32 - I. 从上到下打印二叉树
难度中等217
上到下打印二叉树III
上到下打印二叉树II
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回:
[3,9,20,15,7]
思路
其实就是层次遍历,遍历完第一排之后,就遍历下一排,左到右,先进先出(链表,队列)
题目算法代码如下
public class 从上到下打印二叉树 {
public int[] levelOrder(TreeNode root) {
List<Integer> list = new ArrayList<>();
if (root==null){
return list.stream().mapToInt(i->i).toArray();
}
LinkedList<TreeNode> stack = new LinkedList<>();
stack.add(root);
while (!stack.isEmpty()){
TreeNode node = stack.poll();
list.add(node.val);
if (node.left!=null){
stack.add(node.left);
}
if (node.right!=null){
stack.add(node.right);
}
}
return list.stream().mapToInt(i->i).toArray();
}