https://www.nowcoder.com/exam/oj/ta?page=1&tpId=13&type=13
广度优先搜索,从根节点开始,把根节点加入队列【队列的特点是:先进先出】
随后,进入while循环,针对队列中的每一个节点,具体的操作是:
取出队列中的第一个节点,将其节点的值加入ArrayList
检查该节点有没有左子节点,如果有,加入队列
检查该节点有没有右子节点,如果有,加入队列
不断重复上面的三步,直到队列中没有节点,循环结束,返回arraylist
import java.util.*;
import java.util.ArrayList;
/**
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);
TreeNode tmp;
while (!queue.isEmpty()) {
tmp = queue.poll();
list.add(tmp.val);
if (tmp.left != null) {
queue.offer(tmp.left);
}
if (tmp.right != null) {
queue.offer(tmp.right);
}
}
return list;
}
}