题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。


根据offer书上,这个题有几个变形,首先是普通版,其次是换行打印,最后是之字型打印
其他两题牛客都有,所以只记录普通版
首先是节点入队列,队列为空说明遍历结束,队列不为空时,队首节点出队,并进行相关操作,再将该节点的两个子节点入队即可。层次遍历使用队列,深度遍历使用栈。

import java.util.Queue;
import java.util.ArrayList;
import java.util.LinkedList;
public class Solution {
    public ArrayList<Integer> printTree(TreeNode root) {     
        Queue<TreeNode> queue = new LinkedList<>(); 
        ArrayList arr = new ArrayList<>();
        if(root == null) {
            return arr;
        }
        queue.offer(root);
        while(queue.size()!=0){
            TreeNode node = queue.poll();
            arr.add(node.val);
            if(node.left != null)
                queue.offer(node.left);
            if(node.right != null)
                queue.offer(node.right);         
        }
        return arr;
    }
}