牛客-求二叉树的层序遍历(Java)

快来打我* 2021-06-10 20:40 384阅读 0赞

求二叉树的层序遍历

【题目描述】
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
在这里插入图片描述
该二叉树层序遍历的结果是
[
[3],
[9,20],
[15,7]
]
在这里插入图片描述
分析:一看到二叉树的层序遍历就想到了bfs算法,其实这题就是一个简单的bfs

AC代码(核心代码模式):

  1. import java.util.*;
  2. /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */
  3. public class Solution {
  4. /** * * @param root TreeNode类 * @return int整型ArrayList<ArrayList<>> */
  5. public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
  6. // write code here
  7. ArrayList<ArrayList<Integer> > listLevel=new ArrayList<ArrayList<Integer> >();
  8. Queue<TreeNode> queue=new LinkedList<TreeNode>();
  9. if(root==null)
  10. return listLevel;
  11. queue.offer(root);
  12. while(!queue.isEmpty()){
  13. ArrayList<Integer> arrayList=new ArrayList<Integer>();
  14. int lo=0,end=queue.size();
  15. while(lo++<end){
  16. TreeNode node=queue.poll();
  17. arrayList.add(node.val);
  18. if(node.left!=null)
  19. queue.offer(node.left);
  20. if(node.right!=null)
  21. queue.offer(node.right);
  22. }
  23. if(arrayList.size()>0){
  24. listLevel.add(arrayList);
  25. }
  26. }
  27. return listLevel;
  28. }
  29. }

发表评论

表情:
评论列表 (有 0 条评论,384人围观)

还没有评论,来说两句吧...

相关阅读

    相关

    二叉树的层序遍历 简介 在数据结构的学习过程中,最为重要的便是遍历了,在之前的文章中,已经阐述过了一些内容,主要是如下所示: [原创 数据结构-树与深度优先遍历]

    相关

    周末要给老师写个期中考试的题解 最后两道题全都是关于二叉树的一些算法 层序遍历二叉树直接输入数据,建立二叉排序树,利用队列层序输出即可,没什么难度 贴下自己的代码

    相关

    二叉树的层序遍历的实现还是比较简单的,由于其层级的关系,很明显要用到队列来辅助实现,主要是从左向右,自上而下,依次将二叉树的各节点入队,这样便可以保证输出的顺序是层序排列的。下