文章目录 题目描述代码 & 思路 题目描述 按层次,那么先按序读完本层值,并且存入队列中,再根据队列走下一层的值即可 代码 & 思路 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> ans = new ArrayList<>(); if(root != null) { LinkedList<TreeNode> queue = new LinkedList<>(); queue.offer(root); findAns(ans, 1, queue); } return ans; } // 一次找一层 void findAns(List<List<Integer>> ans, int nodeNums, LinkedList<TreeNode> queue){ if(queue.size() == 0) { return; } int nowNum = 0; List<Integer> nowList = new ArrayList<>(); for(int i = 0; i < nodeNums; i++) { TreeNode nowNode = queue.removeFirst(); nowList.add(nowNode.val); // 处理左右子结点 if(nowNode.left != null){ queue.offer(nowNode.left); nowNum++; } if(nowNode.right != null){ queue.offer(nowNode.right); nowNum++; } } ans.add(nowList); findAns(ans,nowNum,queue); } }