使用Arraylist实现广度优先搜索从上到下打印二叉树
从上往下打印二叉树
http://www.nowcoder.com/questionTerminal/7fe2212963db4790b57431d9ed259701
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
代码
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一定要先声明对象,否则出现空指针异常。