本文共 930 字,大约阅读时间需要 3 分钟。
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解题思路
就是二叉树的层序遍历,用队列来实现。我们需要两个变量,一个start记录当前层已经打印的节点个数,一个end记录前当层所有的节点个数,当 start == end 时,表时当前层遍历完了,就可以开始下一层遍历。代码实现
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 { ArrayList> Print(TreeNode pRoot) { ArrayList > res=new ArrayList >(); if(pRoot==null) return res; ArrayList temp=new ArrayList (); Queue layer=new LinkedList (); layer.offer(pRoot); int start=0,end=1; while(!layer.isEmpty()){ TreeNode node=layer.poll(); temp.add(node.val); start++; if(node.left!=null) layer.add(node.left); if(node.right!=null) layer.add(node.right); if(start==end){ start=0; res.add(temp); temp=new ArrayList (); end=layer.size(); } } return res; }}
转载地址:http://gtssn.baihongyu.com/