【每日一题】【队列的实现类】【每层元素个数】2022年1月11日-NC15 求二叉树的层序遍历
描述
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
例如:
给定的二叉树是{3,9,20,#,#,15,7},
注意:每一层上元素的个数
解答:
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { ArrayList> res = new ArrayList<>(); /** * * @param root TreeNode类 * @return int整型ArrayList > */ public ArrayList> levelOrder (TreeNode root) { level(root); return res; } public void level(TreeNode root) { Queue queue = new LinkedList<>(); List list = new ArrayList<>(); if(root == null) { return; } queue.add(root); while(!queue.isEmpty()) { //需要定义每一层元素的个数(队内元素个数) int size = queue.size(); while(size > 0) { TreeNode node = queue.poll(); list.add(node.val); if(node.left != null) { queue.add(node.left); } if(node.right != null) { queue.add(node.right); } size--; } res.add(new ArrayList<>(list)); list = new ArrayList<>(); } } }