算法训练营day15

一、层序遍历

参考链接7.2 二叉树遍历 - Hello 算法 (hello-algo.com)

层序遍历本质上属于广度优先遍历,也称广度优先搜索,

BFS通常借助队列的先入先出的特性实现

参考链接102. 二叉树的层序遍历 - 力扣(LeetCode)

像这种较为固定思路的算法(层序遍历),理解之后建议背诵复现

怎么样能按照“层”来打印二叉树?

  1. 按层打印,从上至下,是二叉树的广度优先搜索(BFS),使用队列实现
  2. 将每一层打印在一行,并将下一行全部加入到队列中;循环直至queue为空
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {Queue<TreeNode> queue = new LinkedList<>();List<List<Integer>> res = new ArrayList<>();if (root != null) queue.add(root);while (!queue.isEmpty()) {List<Integer> tmp = new ArrayList<>();for(int i = queue.size(); i > 0; i--) {TreeNode node = queue.poll();tmp.add(node.val);if (node.left != null) queue.add(node.left);if (node.right != null) queue.add(node.right);}res.add(tmp);}return res;}
}

对照着理解在这里插入图片描述

二、翻转二叉树

递归翻转

递归三要素参考链接2.2 迭代与递归 - Hello 算法 (hello-algo.com)

  1. 终止条件:用于决定什么时候由“递”转“归”。
  2. 递归调用:对应“递”,函数调用自身,通常输入更小或更简化的参数。
  3. 返回结果:对应“归”,将当前递归层级的结果返回至上一层。
class Solution {public TreeNode invertTree(TreeNode root) {//终止条件if (root == null) return null;TreeNode tmp = root.left;//递归条件1root.left = invertTree(root.right);//递归条件2root.right = invertTree(tmp);//返回结果return root;}
}
三、对称二叉树

这题乍一看挺唬人,节点数量越多越难处理

参考链接101. 对称二叉树 - 力扣(LeetCode)

理解 树无论多少节点 最小逻辑处理单元 都是下图 理解该题就没有问题

在这里插入图片描述

class Solution {public boolean isSymmetric(TreeNode root) {return root == null || recur(root.left, root.right);}boolean recur(TreeNode L, TreeNode R) {if (L == null && R == null) return true;if (L == null || R == null || L.val != R.val) return false;return recur(L.left, R.right) && recur(L.right, R.left);}
}
四、其实反反复复考的还是DFS前中后序,BFS层序遍历的理解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/642188.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2SD1666 封装TO-220F 实物拍摄 功能介绍

2SD1666 是一款 NPN 硅晶体管&#xff0c;适合于低频和音频放大以及开关应用。以下是它的主要功能和参数的详细介绍&#xff1a;功能:低频放大: 适用于音频放大器和其他低频放大应用。 开关: 可用于电源开关和电机控制等应用。 主要参数:极限工作电压 (VCEO): 60V 最大电流允许…

MySQL的创建用户以及用户权限

使用语言 MySQL 使用工具 Navicat Premium 16 代码能力快速提升小方法&#xff0c;看完代码自己敲一遍&#xff0c;十分有用 拖动表名到查询文件中就可以直接把名字拉进来中括号&#xff0c;就代表可写可不写 目录 1.创建用户 1.1 工具创建用户 1.2 脚本创建用户 1.2.…

一文带你掌握yaml文件的使用

在自动化测试数据存储中&#xff0c;比较常见的有csv、json、excel文件等&#xff0c;可能大家忽略了另外一个非常简单、好用的&#xff0c;而且更简洁的文件&#xff0c;那就是咱们今天的主角yaml文件。 yaml文件是一种数据序列化语言&#xff0c;其良好的跨语言、跨平台、易…

【资源分享】Pr-最吊的视频剪辑软件

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

milvus对象存储和消息中间件的工厂设计模式分析

milvus对象存储和消息中间件的工厂设计模式分析 需求 根据参数设置创建mq和storage mq有kafka,pulsar storage有local,minio,remote 配置文件 根据配置文件选择初始化mq和存储: mq:type: pulsarcommon:storageType: minio对于这种类型一个是mq&#xff0c;一个是存储&…

如何编写有效的接口测试?

导读&#xff1a;在所有的开发测试中&#xff0c;接口测试是必不可少的一项。有效且覆盖完整的接口测试&#xff0c;不仅能保障新功能的开发质量&#xff0c;还能让开发在修改功能逻辑的时候有回归的能力&#xff0c;同时也是能优雅地进行重构的前提。编写接口测试要遵守哪些原…

把 WordPress 变成 BaaS 服务:API 调用指南

有了前面两篇内容的铺垫&#xff0c;我们来聊聊 WordPress 作为 CMS / BaaS 服务使用时绕不开的问题&#xff0c;API 调用。 这篇内容同样的&#xff0c;会尽量少贴代码&#xff0c;简单的讲清楚一件事&#xff0c;降低阅读负担。 写在前面 首先&#xff0c;我们需要进行清晰…

开发同城O2O跑腿系统源码:构建高效便捷的本地服务平台教程

为了满足用户对便捷的需求&#xff0c;今天我们将一同探讨如何开发一个高效便捷的同城O2O跑腿系统&#xff0c;以构建一个功能全面、操作简单的本地服务平台。 一、确定需求和功能 在开发同城O2O跑腿系统之前&#xff0c;首先需要明确系统的需求和功能。用户可以通过该系统发布…

智能仓储物流系统(Wms)系列

好的应用系统应是细分简单&#xff0c;界面简洁易操作&#xff0c;程序代码简洁易懂的。 大模块划分&#xff1a; 入库&#xff0c;收货&#xff0c;上架、出库&#xff0c;分配&#xff0c;发货、管理&#xff0c;查询&#xff0c;调整、基础数据、系统管理 入库&#xff0…

一维递归:递去

示例&#xff1a; /*** brief how about recursive-forward-1? show you here.* author wenxuanpei* email 15873152445163.com(query for any question here)*/ #define _CRT_SECURE_NO_WARNINGS//support c-library in Microsoft-Visual-Studio #include <stdio.h>…

国内首个48小时大模型极限挑战赛落幕,四位“天才程序员”共同夺冠

4月21日晚&#xff0c;第四届ATEC科技精英赛&#xff08;ATEC2023&#xff09;线下赛落幕。本届赛事以大模型为技术基座&#xff0c;围绕“科技助老”命题&#xff0c;是国内首个基于真实场景的大模型全链路应用竞赛。ATEC2023线下赛采用48小时极限挑战的形式&#xff0c;来自东…