剑指offer二十二之从上往下打印二叉树
一、题目
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
二、思路
二叉树的层次遍历,可以借助队列实现。具体思路详见注释。
三、代码
import java.util.ArrayList; import java.util.LinkedList; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> arrayList=new ArrayList<Integer>(); //新建一个队列,LinkedList实现了Quene接口,可以直接当作队列来用 LinkedList<TreeNode> queue = new LinkedList<TreeNode>(); TreeNode current; //当前节点 if(root!=null){ queue.offer(root);//根节点入队列 } while (!queue.isEmpty()) { current = queue.poll(); //取出队列的头节点 arrayList.add(current.val);//保存队列的头节点的值 if (current.left != null) { queue.offer(current.left); //如果当前节点的左节点不为空,则左节点入队列 } if (current.right != null) { queue.offer(current.right); //如果当前节点的右节点不为空,则右节点入队列 } } return arrayList; } }
---------------------------------------------------------
参考链接: