当前位置: 首页 > news >正文

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();}
}
http://www.lryc.cn/news/522840.html

相关文章:

  • 如何将 session 共享存储到 redis 中
  • vue3学习三
  • 彻底理解JVM类加载机制
  • 【计算机体系结构、微架构性能分析】core 与 uncore 分别是哪一些部分?区分 core 和 uncore
  • 鸿蒙打包发布
  • vue2:实现上下两栏布局,可拖拽改变高度
  • MongoDB 学习指南:深入探索非关系型数据库
  • 天机学堂3-ES+Caffeine
  • FPGA车牌识别
  • Pandas库的常用内容归纳
  • R语言的并发编程
  • STM32 FreeRTOS中断管理
  • 数据结构-栈和队列
  • RabbitMQ---TTL与死信
  • 第4章 Kafka核心API——Kafka客户端操作
  • Python爬虫学习前传 —— Python从安装到学会一站式服务
  • Lora理解QLoRA
  • Linux测试处理fps为30、1920*1080、一分钟的视频性能
  • Flink (六):DataStream API (三) 窗口
  • MYSQL学习笔记(二):基本的SELECT语句使用(基本、条件、聚合函数查询)
  • PCL 点到面的ICP算法实现点云配准(C++详细过程版)
  • MarsCode青训营打卡Day1(2025年1月14日)|稀土掘金-16.最大矩形面积问题
  • 我的世界-与门、或门、非门等基本门电路实现
  • 【FISCO BCOS】二十三、部署WeBASE-Node-Manager
  • app版本控制java后端接口版本管理
  • Go语言strings包与字符串操作:从基础到高级的全面解析
  • 使用redis-cli命令实现redis crud操作
  • Ubuntu升级Linux内核教程
  • 5、docker-compose和docker-harbor
  • Leetcode3097:或值至少为 K 的最短子数组 II