当前位置:网站首页>leetcode刷题:二叉树04(二叉树的层序遍历)
leetcode刷题:二叉树04(二叉树的层序遍历)
2022-07-04 03:51:00 【涛涛英语学不进去】
102.二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。

乍一看挺复杂,仔细做一下,一招秒。
package com.programmercarl.tree;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.List;
/** * @ClassName LevelOrder * @Descriotion TODO * @Author nitaotao * @Date 2022/7/3 11:55 * @Version 1.0 * https://leetcode.cn/problems/binary-tree-level-order-traversal/ * 102. 二叉树的层序遍历 **/
public class LevelOrder {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
Deque<TreeNode> deque = new ArrayDeque();
if (root == null) {
return result;
}
//入队
deque.offer(root);
while (!deque.isEmpty()) {
int size=deque.size();
List<Integer> floor = new ArrayList();
while (size > 0) {
//每次遍历一层
TreeNode node = deque.poll();
floor.add(node.val);
if (node.left != null) {
deque.offer(node.left);
}
if (node.right != null) {
deque.offer(node.right);
}
size--;
}
result.add(floor);
}
return result;
}
}
层序遍历,大 list
包小 list 。 每个小 list 为一层。
一层一层来,记录当前队列的长度,就是上一层有多少元素,这次就弹出多少次,把新元素继续加在队列尾部即可。
看了一下题解,我的属于广度优先遍历,还有深度优先遍历。
/** * 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>> resList = new ArrayList<List<Integer>>();
public List<List<Integer>> levelOrder(TreeNode root) {
checkFun01(root, 0);
return resList;
}
public void checkFun01(TreeNode node, Integer deep) {
if (node == null) {
return;
}
deep++;
if (resList.size() < deep) {
//当层级增加时,list的Item也增加,利用List的索引值进行层级结点
List<Integer> item = new ArrayList<>();
resList.add(item);
}
resList.get(deep - 1).add(node.val);
checkFun01(node.left, deep);
checkFun01(node.right, deep);
}
}

有一说一我看到不太懂,有点像先准备一个 List ,然后深度优先遍历,把结果按层序遍历的索引放上去。
边栏推荐
- STM32外接DHT11显示温湿度
- Katalon框架测试web(二十六)自动发邮件
- [untitled]
- Is it safe to buy insurance for your children online? Do you want to buy a million dollar medical insurance for your children?
- The new data center helps speed up the construction of a digital economy with data as a key element
- Flink学习8:数据的一致性
- [Huawei cloud IOT] reading notes, "Internet of things: core technology and security of the Internet of things", Chapter 3 (I)
- 毕业设计:设计秒杀电商系统
- 02 ls 命令的具体实现
- [paddleseg source code reading] paddleseg custom data class
猜你喜欢

Introduction to asynchronous task capability of function calculation - task trigger de duplication

Unity 绘制弹球和台球的运动轨迹

User defined path and file name of Baidu editor in laravel admin

Mindmanager2022 efficient and easy to use office mind map MindManager

Getting started with the go language is simple: go implements the Caesar password

分布式系统:what、why、how

Objective-C description method and type method

函数计算异步任务能力介绍 - 任务触发去重

Restore the subtlety of window position

Katalon框架测试web(二十六)自动发邮件
随机推荐
Storage of MySQL database
[book club issue 13] packaging format of video files
用于TCP协议交互的TCPClientDemo
SQL statement strengthening exercise (MySQL 8.0 as an example)
毕业总结
vue多级路由嵌套怎么动态缓存组件
01 QEMU starts the compiled image vfs: unable to mount root FS on unknown block (0,0)
02 specific implementation of LS command
LevelDB源码解读-SkipList
量子力学习题
[Logitech] m720
数据库SQL语句汇总,持续更新......
User defined path and file name of Baidu editor in laravel admin
[csrf-01] basic principle and attack and defense of Cross Site Request Forgery vulnerability
Simple dialogue system -- text classification using transformer
[Huawei cloud IOT] reading notes, "Internet of things: core technology and security of the Internet of things", Chapter 3 (I)
Objective-C description method and type method
JDBC advanced
[paddleseg source code reading] paddleseg custom data class
SQL語句加强練習(MySQL8.0為例)
