一、题目
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
二、思路
二叉树的层次遍历,可以借助队列实现。具体思路详见注释。
三、代码
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; }
}
---------------------------------------------------------
参考链接: