題目描述
從上往下打印出二叉樹(shù)的每個(gè)節(jié)點(diǎn)持际,同層節(jié)點(diǎn)從左至右打印。
代碼實(shí)現(xiàn)
import java.util.ArrayList;
import java.util.Queue;
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> list = new ArrayList();
if(root == null)
return list;
Queue<TreeNode> queue = new LinkedList();
queue.offer(root);
while(!queue.isEmpty()){
TreeNode treeNode = queue.poll();
list.add(treeNode.val);
if(treeNode.left != null)
queue.offer(treeNode.left);
if(treeNode.right != null)
queue.offer(treeNode.right);
}
return list;
}
}
主要思路
1谒拴、從上到下按層打印二叉樹(shù)巍糯,實(shí)際上考查的就是二叉樹(shù)的廣度優(yōu)先遍歷啸驯,用一個(gè)隊(duì)列和一個(gè) list 就可以實(shí)現(xiàn)(隊(duì)列用來(lái)暫存遍歷過(guò)程中得到的結(jié)點(diǎn)客扎;list 是一個(gè)容器祟峦,用來(lái)裝載每次從隊(duì)列頭部取出來(lái)的結(jié)點(diǎn),也就是你要打印的內(nèi)容)
2身害、主要思路:每次從隊(duì)列頭部取出一個(gè)結(jié)點(diǎn)之后怠李,就把這個(gè)結(jié)點(diǎn)放入 list 中,然后如果該結(jié)點(diǎn)有子結(jié)點(diǎn)相恃,就把該結(jié)點(diǎn)的子結(jié)點(diǎn)放到隊(duì)列的末尾厌衙。只要隊(duì)列不為空距淫,說(shuō)明未打印完所有結(jié)點(diǎn),則繼續(xù)從隊(duì)列頭部取出結(jié)點(diǎn)婶希,重復(fù)上述操作榕暇,直到隊(duì)列為空。