解題思路:從上往下打印,則是父節點—>左子節點—>右子節點的順序,總的來說順序是很明確的,左子節點的子節點也優先於右子節點的子節點,所以只要從左往右依次遍歷左右子節點,子節點的子節點也能是順序排列的,隊列可以滿足該需求
代碼如下:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;/**
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> list = new ArrayList<Integer>();
LinkedList queue = new LinkedList();
if(root == null){
return new ArrayList<Integer>();
}
TreeNode temp = root;
queue.add(temp);
while (!queue.isEmpty()){
temp = (TreeNode)queue.poll();
list.add(temp.val);
if(temp.left != null){
queue.add(temp.left);
}
if(temp.right != null){
queue.add(temp.right);
}
}
return list;
}
}
end