算法1
(层序遍历) $O(n)$
按每层遍历,所以用一个队列,新的节点压进去,老的节点从队列的最前面取出来,压进去的顺序按着先左子树,再右子树的顺序,即可。
Java 代码
class Solution {
public List<Integer> printFromTopToBottom(TreeNode root) {
List<Integer> list = new ArrayList<>();
Queue<TreeNode> q = new LinkedList<>();
if(root==null)
return list;
q.offer(root);
while(q.size()!=0){
TreeNode tmp = q.peek();
q.poll();
list.add(tmp.val);
if(tmp.left!=null)
q.offer(tmp.left);
if(tmp.right!=null)
q.offer(tmp.right);
}
return list;
}
}