题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
根据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; } }