试题:
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
代码:
首先肯定要用BFS,一个问题是我们对二叉树进行遍历时,按照从左到右会自动形成DFS。所以就需要我们在将当前层处理完后才能继续往下遍历。所以我们需要将当前层所有节点先都记录下来,然后再取值后遍历。
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> vals = new ArrayList<>();
ArrayList<TreeNode> nodes = new ArrayList<>();
if(root == null) return vals;
nodes.add(root);
while(!nodes.isEmpty()){
TreeNode temp = nodes.remove(0);
vals.add(temp.val);
if(temp.left != null) nodes.add(temp.left);
if(temp.right != null ) nodes.add(temp.right);
}
return vals;
}
}