题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
参考思路
一行一行打印二叉树本质上就是二叉树的广度优先遍历(BFS),因此可以借助一个队列(LinkedList)来记录结点。这边有一个需要特殊处理的是每次都需要读出当前队列中的结点数量,即当前一层的所有结点数,才能满足题目条件一层一层输出。
参考代码
import java.util.*;
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
//队列本质上就是LinkedList,因此这边直接使用LinkedList
LinkedList<TreeNode> linkList = new LinkedList<TreeNode>();
ArrayList<ArrayList<Integer> > res = new ArrayList<ArrayList<Integer> >();
if(pRoot == null){
return res;
}
linkList.offer(pRoot);
while(!linkList.isEmpty()){
//这个size是当前一层结点个数,方便后面按层输出
ArrayList<Integer> list = new ArrayList<Integer>();
int size = linkList.size();
for(int i=0;i<size;i++){
TreeNode tmpNode = linkList.poll();
list.add(tmpNode.val);
if(tmpNode.left != null){
linkList.offer(tmpNode.left);
}
if(tmpNode.right != null){
linkList.offer(tmpNode.right);
}
}
res.add(list);
}
return res;
}
}
本文介绍了一种实现二叉树层序遍历的方法,通过使用队列(LinkedList)来记录并逐层输出二叉树节点,每层节点从左至右依次输出,满足了题目要求的层次输出特性。
787

被折叠的 条评论
为什么被折叠?



