简洁+注释剑指 Offer 32 - II. 从上到下打印二叉树 II
Posted 来老铁干了这碗代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简洁+注释剑指 Offer 32 - II. 从上到下打印二叉树 II相关的知识,希望对你有一定的参考价值。
立志用最少的代码做最高效的表达
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7],
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示:
节点总数 <= 1000
class Solution{
public List<List<Integer>> levelOrder(TreeNode root) {
if(root == null) return null; // 根节点为空的情况
List<List<Integer>>list = new ArrayList<>();
Queue<TreeNode> q = new ArrayDeque<>(); // 队列
q.add(root); // 先加入头结点
while(!q.isEmpty()) { // 当队列非空时一直运行
int nowLevelNums = q.size(); // 记录当前节点数,若节点数减为0,则代表该层结束
List<Integer>tmpList = new ArrayList<>(); // 存储每一层的节点的值
while(nowLevelNums-- != 0) {
TreeNode tmp = q.remove(); // 将队列中的每个节点都出队,逐一判断
tmpList.add(tmp.val);
if(tmp.left != null) q.add(tmp.left);
if(tmp.right != null) q.add(tmp.right);
}
list.add(tmpList);
}
return list;
}
}
完整可运行代码
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
public class 剑指Offer32_II_从上到下打印二叉树II {
static class TreeNode{
int val;
TreeNode left, right;
TreeNode(int v) { val = v; }
}
static class Solution{
public List<List<Integer>> levelOrder(TreeNode root) {
if(root == null) return null; // 根节点为空的情况
List<List<Integer>>list = new ArrayList<>();
Queue<TreeNode> q = new ArrayDeque<>(); // 队列
q.add(root); // 先加入头结点
while(!q.isEmpty()) { // 当队列非空时一直运行
int nowLevelNums = q.size(); // 记录当前节点数,若节点数减为0,则代表该层结束
List<Integer>tmpList = new ArrayList<>(); // 存储每一层的节点的值
while(nowLevelNums-- != 0) {
TreeNode tmp = q.remove(); // 将队列中的每个节点都出队,逐一判断
tmpList.add(tmp.val);
if(tmp.left != null) q.add(tmp.left);
if(tmp.right != null) q.add(tmp.right);
}
list.add(tmpList);
}
return list;
}
}
public static void main(String[] args) {
}
}
以上是关于简洁+注释剑指 Offer 32 - II. 从上到下打印二叉树 II的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II