题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
//创建两个ArrayList,一个用来存储节点,一个用于存储节点的值作为返回值。
//1.先将根节点加入到队列中
//2.取出根节点的元素,将左右节点放入队列
//3.取出左节点的元素,将左节点的左右节点放入队列
//4.取出右节点的元素,将右节点的左右节点放入队列
//5.按着节点存储队列依次取元素,直到末尾
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> valList=new ArrayList<Integer>();
ArrayList<TreeNode> treeList=new ArrayList<TreeNode>();
if(root==null){
return valList;
}
treeList.add(root);
for(int i=0;i<treeList.size();i++){//treeList.size()一直在变化
TreeNode node= treeList.get(i);
if(node.left!=null){
treeList.add(node.left);
}
if(node.right!=null){
treeList.add(node.right);
}
valList.add(node.val);
}
return valList;
}
}
注意:节点队列的特殊写法,和list.get() list.add() list.size()的用法