剑指offer - 从上往下打印二叉树(Java实现)
思路:二叉树的层序遍历,我们可以使用 bfs 来完成对二叉树的遍历,首先我们可以将 root 结点放入队列中,然后开始遍历队列,在遍历队列的过程中,我们就可以发现,队列中所保存的节点就是我们遍历的二叉树中当前层的所有节点,我们对当前层所以节点进行一个遍历,那么我们就可以得到下一层的所有节点,在处理某一层的某一个结点的时候,如果左儿子存在则左儿子放入队列,如果右儿子存在则右儿子放入队列,某一层所有节点都处理结束以后在队列中我们就可以得到当前层的下一层的所有节点,这样一直到队列中没有元素的时候我们就完成了对二叉树的遍历。
import java.util.ArrayList; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ import java.util.*; public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { Queue<TreeNode> q = new LinkedList<>(); ArrayList<Integer> list = new ArrayList<>(); if(root == null) return list; q.add(root); while(!q.isEmpty()) { int n = q.size(); for(int i = 0; i < n; ++ i) { TreeNode cur = q.poll(); list.add(cur.val); if(cur.left != null) q.add(cur.left); if(cur.right != null) q.add(cur.right); } } return list; } }
【剑指offer】题目全解 文章被收录于专栏
本专栏主要是刷剑指offer的题解记录