题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
代码
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> listVal = new ArrayList<Integer>();
if(root==null){
return listVal;
}
if(root.left==null&&root.right==null){
listVal.add(root.val);
return listVal;
}
ArrayList<TreeNode> listNode = new ArrayList<TreeNode>();
listNode.add(root);
while(!listNode.isEmpty()){
ArrayList<TreeNode> listNodeNext = new ArrayList<TreeNode>();//每次重新声明避免空指针异常。
for(TreeNode cur : listNode){
if(cur.left != null){
listNodeNext.add(cur.left);
}
if(cur.right != null){
listNodeNext.add(cur.right);
}
listVal.add(cur.val);
}
listNode = listNodeNext;
}
return listVal;
}
}- 注意:list一定要先声明对象,否则出现空指针异常。

京公网安备 11010502036488号