牛客-求二叉树的层序遍历(Java)
求二叉树的层序遍历
【题目描述】
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
该二叉树层序遍历的结果是
[
[3],
[9,20],
[15,7]
]
分析:一看到二叉树的层序遍历就想到了bfs算法,其实这题就是一个简单的bfs
AC代码(核心代码模式):
import java.util.*;
/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */
public class Solution {
/** * * @param root TreeNode类 * @return int整型ArrayList<ArrayList<>> */
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
ArrayList<ArrayList<Integer> > listLevel=new ArrayList<ArrayList<Integer> >();
Queue<TreeNode> queue=new LinkedList<TreeNode>();
if(root==null)
return listLevel;
queue.offer(root);
while(!queue.isEmpty()){
ArrayList<Integer> arrayList=new ArrayList<Integer>();
int lo=0,end=queue.size();
while(lo++<end){
TreeNode node=queue.poll();
arrayList.add(node.val);
if(node.left!=null)
queue.offer(node.left);
if(node.right!=null)
queue.offer(node.right);
}
if(arrayList.size()>0){
listLevel.add(arrayList);
}
}
return listLevel;
}
}
还没有评论,来说两句吧...