从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路:对二叉树的层序遍历,结点满足先进先出的原则,利用队列。每从队列中取出头部结点并将结点的值存入ArrayList,若其有子结点,把子结点放入队列尾部,直到所有结点遍历完毕。
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) {
LinkedList<TreeNode> list_temp = new LinkedList<TreeNode>();
ArrayList<Integer> list = new ArrayList<Integer>();
if(root==null) return list;
list.add(root.val);
list_temp.offer(root);
TreeNode node = null;
while(list_temp.size()!=0){
node = list_temp.poll();
if(node.left!=null){
list_temp.offer(node.left);
list.add(node.left.val);
}
if(node.right!=null){
list_temp.offer(node.right);
list.add(node.right.val);
}
}
return list;
}
}
1、层序遍历时,一般都要用到队列,可以用LinkedList类(offer和poll方法)
2、ArrayList类(add方法)