Java算法 二叉树入门 力扣简单题相同的树 翻转二叉树 判断对称二叉树 递归求二叉树的层数
目录
模版
先序遍历
中序遍历
后序遍历
力扣原题 相同的二叉树
力扣原题 翻转二叉树
遍历树的层数
题目
静态变量
核心逻辑
模版

// 二叉树public static class Node{public int value;public Node left;public Node right;public Node(int v) {value=v;}}
先序遍历
根节点 左孩子节点 右孩子节点

中序遍历
左孩子节点 根节点 右孩子节点

后序遍历
左孩子节点 右孩子节点 根节点

力扣原题 相同的二叉树
100. 相同的树 - 力扣(LeetCode)

/*** 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 boolean isSameTree(TreeNode p, TreeNode q) {if(p==null && q!=null){return false;}if(p!=null && q==null){return false;}if(p==null && q==null){return true;}// 都不为空return p.val==q.val && isSameTree(p.left,q.left) && isSameTree(p.right,q.right);}
}
力扣原题 翻转二叉树

/*** 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 TreeNode flipTree(TreeNode root) {if(root == null) return null;TreeNode tmp = root.left;root.left = flipTree(root.right);root.right = flipTree(tmp);return root;}
}
遍历树的层数
题目

静态变量

核心逻辑

import java.util.*;
import java.math.*;
import java.time.*;
import java.io.*;
import java.util.regex.*;// Eclipse IDE 2020 08
// OpenJDK 1.8
// 下方网页是个人主页
// http://gczdy.cn/*.-'''-.
_______ _______ ' _ \
\ ___ `'. \ ___ `'. / /` '. \ ' |--.\ \ ' |--.\ \ . | \ ' | | \ ' | | \ ' | ' | ' | | | '| | | ' \ \ / / | | | || | | | _ _`. ` ..' / | | ' .'| | ' .'| ' / | '-...-'` | |___.' /' | |___.' /'.' | .' |
/_______.'/ /_______.'/ / | / |
\_______|/ \_______|/ | `'. | ' .'| '/ `-' `--'
*//*** * @Author Dduo* @Date 2025-01-10*/
public class Main {// 普通流
// static Scanner sc = new Scanner(System.in);// 数据流快读模板(类似于C++的IOS)static Read sc=new Read();// 时间类 用来测试运行时间static Instant START=Instant.now();static long MOD = (long) (1e9 + 7);static int[] dx = {0, 0, 1, -1, 1, -1, 1, -1};static int[] dy = {1, -1, 0, 0, -1, -1, 1, 1};private static final int[] DIRECTIONS = {-1, 0, 1, 0, -1};/**** @param args* @return* @throws Exception */public static void main(String[] args) throws Exception {int t = 1;
// t = sc.nextInt();// 预处理preconditioning();while (t-- > 0) {solve();}// sc.close();
// dduoln("运行时间 : "+Duration.between(START,Instant.now()).toMillis()+"ms");return;}// 输出流 static <T> void dduoln(T t) {System.out.println(t);}static <T> void dduo(T t) {System.out.print(t);}// 预处理static void preconditioning() {}// 数据结构模板 二叉树 by Dduostatic class Node{public int value;public Node left;public Node right;public Node() {}public Node(int v) {value=v;}}// 静态变量static Node[] a = new Node[1000010];static int cnt=0;// 核心代码逻辑static void solve() throws Exception { // 构造二叉树int n=sc.nextInt();for(int i=1;i<=n;i++) {a[i]=new Node(i);int l=sc.nextInt();int r=sc.nextInt();if (l != 0) {a[i].left = new Node(l);}if (r != 0) {a[i].right = new Node(r);}}dfs(a[1],1);dduoln(cnt);}static void dfs(Node node,int max){
// System.out.println("Visiting Node " + node.value + " at depth " + max);// 判断当前节点是否是叶子节点(即左右子节点都为null)if (node.left == null && node.right == null) {cnt = Math.max(cnt, max);return; }// 遍历左子树if (node.left != null) {dfs(a[node.left.value], max + 1);}// 遍历右子树if (node.right != null) {dfs(a[node.right.value], max + 1);}}// 快速幂模版 by Dduostatic long pow(long a, long b) {if (b == 0) return 1;if (b == 1) return a;try {long result = 1;while (b > 0) {if ((b & 1) == 1) {if (result > Long.MAX_VALUE / a) return Long.MAX_VALUE;result *= a;}b >>= 1;if (b > 0) {if (a > Long.MAX_VALUE / a) return Long.MAX_VALUE;a *= a;}}return result;} catch (Exception e) {return Long.MAX_VALUE;}}
}// 数据结构模版 并查集 by Dduo
class UnionFind {private int[] parent;private int[] size;// 初始化并查集public UnionFind(int n) {parent = new int[n + 1]; // 因为编号从 1 到 N,所以数组大小是 N+1size = new int[n + 1];for (int i = 1; i <= n; i++) {parent[i] = i; // 每个元素的父节点初始为自己size[i] = 1; // 每个元素的初始大小为 1}}// 查找元素 x 所在的集合,带路径压缩优化public int find(int x) {if (parent[x] != x) {parent[x] = find(parent[x]); // 路径压缩}return parent[x];}// 合并两个集合 带按秩合并优化public void union(int x, int y) {int rootX = find(x);int rootY = find(y);if (rootX != rootY) {// 按秩合并 较小的树合并到较大的树上if (size[rootX] < size[rootY]) {parent[rootX] = rootY;size[rootY] += size[rootX];} else {parent[rootY] = rootX;size[rootX] += size[rootY];}}}// 判断 x 和 y 是否在同一个集合中public boolean connected(int x, int y) {return find(x) == find(y);}
}// 数据流快读模板(类似于C++的IOS) by Dduo
class Read{BufferedReader bf;StringTokenizer st;BufferedWriter bw;public Read(){bf=new BufferedReader(new InputStreamReader(System.in));st=new StringTokenizer("");bw=new BufferedWriter(new OutputStreamWriter(System.out));}
// 以下为输入部分:public String nextLine() throws IOException{return bf.readLine();}public String next() throws IOException{while(!st.hasMoreTokens()){st=new StringTokenizer(bf.readLine());}return st.nextToken();}public char nextChar() throws IOException{//确定下一个token只有一个字符的时候再用return next().charAt(0);}public int nextInt() throws IOException{return Integer.parseInt(next());}public long nextLong() throws IOException{return Long.parseLong(next());}public double nextDouble() throws IOException{return Double.parseDouble(next());}public float nextFloat() throws IOException{return Float.parseFloat(next());}public byte nextByte() throws IOException{return Byte.parseByte(next());}public short nextShort() throws IOException{return Short.parseShort(next());}public BigInteger nextBigInteger() throws IOException{return new BigInteger(next());}public BigDecimal nextDecimal() throws IOException{return new BigDecimal(next());}
// 以下为输出部分:public void println(int a) throws IOException{print(a);println();return;}public void print(int a) throws IOException{bw.write(String.valueOf(a));return;}public void println(String a) throws IOException{print(a);println();return;}public void print(String a) throws IOException{bw.write(a);return;}public void println(long a) throws IOException{print(a);println();return;}public void print(long a) throws IOException{bw.write(String.valueOf(a));return;}public void println(double a) throws IOException{print(a);println();return;}public void print(double a) throws IOException{bw.write(String.valueOf(a));return;}public void print(BigInteger a) throws IOException{bw.write(a.toString());return;}public void print(char a) throws IOException{bw.write(String.valueOf(a));return;}public void println(char a) throws IOException{print(a);println();return;}public void println() throws IOException{bw.newLine();return;}
// 其他调试命令:public void flush() throws IOException{
// 交互题分组调试,或者提前退出的情况下可以先运行此语句再推出bw.flush();return;}public boolean hasNext() throws IOException{
// 本地普通IDE难以使用这个方法调试,需要按照数据组flush,刷新语句:
// sc.flush()
// 调试完可删去return bf.ready();}
}相关文章:
Java算法 二叉树入门 力扣简单题相同的树 翻转二叉树 判断对称二叉树 递归求二叉树的层数
目录 模版 先序遍历 中序遍历 后序遍历 力扣原题 相同的二叉树 力扣原题 翻转二叉树 遍历树的层数 题目 静态变量 核心逻辑 模版 // 二叉树public static class Node{public int value;public Node left;public Node right;public Node(int v) {valuev;}} 先序遍历 …...
如何将 session 共享存储到 redis 中
文章目录 一. 分布式 session 登录1.1 什么是分布式?1.2 Session 共享1.3 为什么服务器 A 登录后,请求发到服务器 B,不认识该用户?1.4 共享存储 二. Session 共享实现Redis三. 测试session共享四. cookie设置4.1 前端4.2 后端 一.…...
vue3学习三
五 计算属性 定义 选项式 export default {data(){return {num:1}},computed:{num1(){this.num1}} } 组合式 import {ref,computed} from vuelet numref(0); //仅读 let num1 computed(()>{return num.value1 }) 计算时依赖的变量数据发生变化,则计算属性…...
彻底理解JVM类加载机制
文章目录 一、类加载器和双亲委派机制1.1、类加载器1.2、双亲委派机制1.3、自定义类加载器1.4、打破双亲委派机制 二、类的加载 图片来源:图灵学院 由上图可知,创建对象,执行其中的方法,在java层面,最重要的有获取…...
【计算机体系结构、微架构性能分析】core 与 uncore 分别是哪一些部分?区分 core 和 uncore
在计算机体系结构中,Core 和 Uncore 是描述处理器内部架构的两个重要概念,尤其在多核处理器中更为常见。 1. Core(核心) Core 指的是处理器中的计算核心,是执行指令和处理数据的基本单元。每个核心都包含独立的执行单…...
鸿蒙打包发布
HarmonyOS应用/元服务发布(打包发布) https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/ide-publish-app-V13?catalogVersionV13 密钥:包含非对称加密中使用的公钥和私钥,存储在密钥库文件中,格式…...
vue2:实现上下两栏布局,可拖拽改变高度
要拖拽改变两栏高度,那么总高度要确定,在拖拽的过程中,实时根据光标位置计算两栏高度,所以: 1、最外层有一个box, 高度是屏幕高度screenHeight; 2、该值在页面挂载时获取初始值(window.innerHeight-100),这里减少100,因为窗口上面有工具栏; 3、监听窗口resize事件…...
MongoDB 学习指南:深入探索非关系型数据库
MongoDB学习资料 MongoDB学习资料 MongoDB学习资料 在当今数字化时代,数据量呈爆炸式增长,数据结构也变得愈发复杂多样。传统的关系型数据库在处理一些大规模、高并发以及非结构化数据时,逐渐显露出局限性。而 MongoDB 作为一款领先的非关系…...
天机学堂3-ES+Caffeine
文章目录 day05-问答系统表 用户端分页查询问题目标效果代码实现 3.6.管理端分页查询问题ES相关 管理端互动问题分页实现三级分类3.6.5.2.多级缓存3.6.5.3.CaffeineTODO:使用Caffeine作为本地缓存,另外使用redis或者memcache作为分布式缓存,构…...
FPGA车牌识别
基于FPGA的车牌识别主要包含以下几个步骤:图像采集、颜色空间转换、边缘检测、形态学处理(腐蚀和膨胀)、特征值提取、模板匹配、结果显示。先用matlab对原理进行仿真,后用vivado和modelsim进行设计和仿真。 一、1.图像采集采用ov…...
Pandas库的常用内容归纳
Pandas 是一个强大的 Python 数据分析库,提供了大量用于数据处理和分析的功能。以下是一些 Pandas 库中常用的功能: 数据创建和操作 Series 和 DataFrame:创建一维的 Series 和二维的 DataFrame 对象。数据导入:从 CSV、Excel、…...
R语言的并发编程
R语言的并发编程 引言 在现代计算中,如何有效地利用计算资源进行数据处理和分析已成为一个重要的研究方向。尤其在大数据时代,数据量的急剧增加让单线程处理方式显得力不从心。为了解决这一问题,各种编程语言都开展了并发编程的研究和应用。…...
STM32 FreeRTOS中断管理
目录 FreeRTOS的中断管理 1、STM32中断优先级管理 2、FreeRTOS任务优先级管理 3、寄存器和内存映射寄存器 4、BASEPRI寄存器 5、FreeRTOS与STM32中断管理结合使用 vPortRaiseBASEPRI vPortSetBASEPRI 6、FromISR后缀 7、在中断服务函数中调用FreeRTOS的API函数需注意 F…...
数据结构-栈和队列
文章目录 一、栈1.概念与结构2.数组栈的实现2.1 栈的结构定义2.2 栈的初始化2.3 栈的销毁2.4 栈的判空2.5 栈的入栈2.6 栈的出栈2.7 查看栈顶元素2.8 栈的大小 3.两种栈的图示结构 二、队列1.概念与结构2.链式队列的实现2.1 队列的结构定义2.2 队列的初始化2.3 队列的销毁2.4 队…...
RabbitMQ---TTL与死信
(一)TTL 1.TTL概念 TTL又叫过期时间 RabbitMQ可以对队列和消息设置TTL,当消息到达过期时间还没有被消费时就会自动删除 注:这里我们说的对队列设置TTL,是对队列上的消息设置TTL并不是对队列本身,不是说队列过期时间…...
第4章 Kafka核心API——Kafka客户端操作
Kafka客户端操作 一. 客户端操作1. AdminClient API 一. 客户端操作 1. AdminClient API...
Python爬虫学习前传 —— Python从安装到学会一站式服务
早上好啊,大佬们。我们的python基础内容的这一篇终于写好了,啪唧啪唧啪唧…… 说实话,这一篇确实写了很久,一方面是在忙其他几个专栏的内容,再加上生活学业上的事儿,确实精力有限,另一方面&…...
Lora理解QLoRA
Parameter-Efficient Fine-Tuning (PEFT) :节约开销的做法,fine-tune少量参数,而不是整个模型; Low-Rank Adaptation (LoRA) :是PEFT的一种;冻结原参数矩阵,只更新2个小参数矩阵。 原文经过对比…...
Linux测试处理fps为30、1920*1080、一分钟的视频性能
前置条件 模拟fps为30、1920*1080、一分钟的视频 项目CMakeLists.txt cmake_minimum_required(VERSION 3.30) project(testOpenGl)set(CMAKE_CXX_STANDARD 11)add_executable(testOpenGl main.cpptestOpenCl.cpptestOpenCl.hTestCpp.cppTestCpp.hTestCppThread.cppTestCppTh…...
Flink (六):DataStream API (三) 窗口
1. 窗口 窗口(Window)是处理无界流的关键所在。窗口可以将数据流装入大小有限的“桶”中,再对每个“桶”加以处理。 下面展示了 Flink 窗口在 keyed streams 和 non-keyed streams 上使用的基本结构。 我们可以看到,这两者唯一的…...
T型翼/尾板导向的穿浪双体船姿态控制【附代码】
✨ 长期致力于穿浪双体船、T型翼、尾板、多自由度姿态控制、舒适性评估研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)动态水翼升力模型与耦合运动方…...
物理引导的机器学习工作流:气候建模的融合创新与实践
1. 项目概述:当气候建模遇见机器学习如果你像我一样,在气候模拟这个领域摸爬滚打超过十年,就会深刻体会到一种“甜蜜的负担”:我们构建的地球系统模型(ESM)越来越精细,物理过程越来越复杂&#…...
电信运营商每月处理海量工单,如何不再出错?基于AI Agent的端到端自动化解决方案
在2026年的电信行业,海量工单处理已不再仅仅是效率问题,而是合规与生存的底线。随着2026年5月20日《电信和互联网服务 基础电信企业网上营业厅服务规范》国家标准的正式实施,监管层对“信息透明、流程闭环、计费精准”的要求达到了前所未有的…...
Postgresql基础实践教程(九)
⭐️⭐️⭐️⭐️⭐️ 完整数据详见 练习数据免费 ⭐️⭐️⭐️⭐️⭐️ 七十二、WITH查询(公用表表达式CTE) 1. SELECT 中的 WITH 2. 递归查询 3. 公用表表达式的物化 4. WITH中的数据修改语句 WITH提供了一种在主查询中写辅助语句的方法。这些语…...
如何在浏览器中一键解密所有加密音乐文件:Unlock-Music完全指南
如何在浏览器中一键解密所有加密音乐文件:Unlock-Music完全指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地…...
紧急预警:DeepSeek代码生成中未公开的3类逻辑漂移现象(附自动化检测脚本+修复模板)
更多请点击: https://intelliparadigm.com 第一章:紧急预警:DeepSeek代码生成中未公开的3类逻辑漂移现象(附自动化检测脚本修复模板) 近期在多轮生产级代码审计中发现,DeepSeek-R1(v2.5&#x…...
基于C#实现(WinForm)P2P聊天程序
♻️ 资源 大小: 29.8MB ➡️ 资源下载:https://download.csdn.net/download/s1t16/87430269 p2p聊天程序 一、功能介绍 1.1 登录 用户凭用户名和密码登录系统,可以更换服务器 IP 和端口,以防网络不畅通,连接服务…...
DeepSeek安全测试辅助Prompt工程白皮书(含17个CVE靶场验证指令模板)
更多请点击: https://intelliparadigm.com 第一章:DeepSeek安全测试辅助 DeepSeek系列大模型在代码生成、漏洞模式识别与安全上下文理解方面展现出独特优势,可作为安全测试工程师的智能协作者。其对OWASP Top 10、CWE分类体系及常见PoC结构具…...
Sora 2 GIF导出速度提升300%?20年多媒体架构师亲授GPU加速转码链路(CUDA 12.4 + cuVID硬编实测)
更多请点击: https://kaifayun.com 第一章:Sora 2 GIF导出方法概览 Sora 2 并非 OpenAI 官方发布的模型,当前(截至2024年)并无名为“Sora 2”的公开产品。因此,所谓“Sora 2 GIF导出”实为社区对视频生成工…...
为内部知识库问答机器人集成taotoken多模型能力的架构设计
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部知识库问答机器人集成taotoken多模型能力的架构设计 应用场景类,探讨为企业内部知识库构建智能问答机器人时&…...
