226.翻转二叉树 (前序,后序)

题目链接 | 文档讲解 |视频讲解 : 链接

 1.思路:
  •    翻转的是指针,不是数值

  •   前序遍历和后序遍历都可以

  •   中序不行,中序遍历的顺序是左中右,反转左指针后,到根节点,在反转右节点(此时的右节点就是原先的左节点),真正的右节点没有被处理

2.举例:

步骤当前节点操作
14进入函数,调用 invertTree(2)
22调用 invertTree(1)
31左右为空,直接交换(没变化)
42回到 2,调用 invertTree(3)
53左右为空,交换(没变化)
62交换自己的左右子节点(2 的左右变成 3 和 1)
74回到 4,调用 invertTree(5)
85左右为空,交换(没变化)
94最后交换自己的左右子节点(4 的左右变成 5 和 2)
 2.代码:
    public TreeNode invertTree(TreeNode root) {//递归终止条件if(root==null){return null;}//递归的逻辑//左invertTree(root.left);//右invertTree(root.right);//中 最后交换当前节点的左右子节点TreeNode temp=root.left;root.left=root.right;root.right=temp;return root;}

101. 对称二叉树(后序)

题目链接 | 文档讲解 |视频讲解:链接

 
1.思路:

1.二叉树是否是对称二叉树,要比较的是左右子树是不是可以相互翻转,比较的是2棵树,所说递归遍历要同时遍历两颗树
2.判断的情况分为下面几种:
     如果左子树为空,右子树不为空  返回false
     如果右子树为空,左子树不为空  返回false
     如果左子树为空,右子树为空    返回true
     如果左子树不为空,右子树不为空,但是左右子树值不相等,返回false
3.如何比较元素是否相等
    左子树的左节点和右子树的右节点进行比较
    左子树的右节点和右子树的左节点进行比较
4.因为要遍历左右节点,遍历顺序是左右中,所以本题只能是后序遍历

 2.代码:
public boolean isSymmetric(TreeNode root){return isSame(root.left,root.right);}public boolean isSame(TreeNode left,TreeNode right){//左节点为空 右节点不为空if(left==null && right!=null){return  false;}//左节点不为空 右节点为空if(left!=null &&right==null){return  false;}//左右节点均为空if(left==null &&left==null){return  true;}//左右节点不为空 但值不相等if(left.val != right.val ){return false;}//比较外侧boolean leftResult = isSame(left.left, right.right);//比较内侧boolean rightResult = isSame(left.right, right.left);//中return leftResult && rightResult;}

104.二叉树的最大深度(前序,后序)

题目链接 | 文档讲解 |视频讲解:链接

二叉树的深度前序遍历 根节点到该节点的最长简单路径边的条数或者节点数(从上到下 eg:井高度) 从1开始

二叉树的高度后序遍历 指从该节点到叶子节点的最长简单路径边的条数或者节点数(从下到上  eg:楼高度)从1开始

 1.思路:

       二叉树的最大深度=二叉树的最大高度,所以可以采取后序遍历

      递归计算的是当前节点左子树和右子树的高度,所以需要将当前节点加上,最后的值+

 2.代码:
    public int maxDepth(TreeNode root){//递归终止条件if(root==null){return 0;}//递归逻辑//左子树最大深度int leftHeight=maxDepth(root.left);//右子树最大深度int rightHeight=maxDepth(root.right);//返回左右子树最大深度+1(当前节点深度)return Math.max(leftHeight,rightHeight)+1;}

111.二叉树的最小深度 (前序,后序)

题目链接 | 文档讲解 |视频讲解:链接

 1.思路:
  • 题目上求的是最小深度,指的是从根节点到最近叶子结点的距离

  • 本题代码使用的是后序遍历(前序遍历也可以),其实求的是根节点到叶子节点的最小距离,就是求高度的过程,不过这个最小距离 也同样是最小深度

  • 因为求的是最小,而且求的是根节点到叶子节点的最小深度,所以需要排除左子树或叶子树为空的情况

 2.代码:
public int  minDepth(TreeNode root){//递归终止条件if(root==null){return 0;}//递归逻辑 (后续遍历)int leftHeight =minDepth(root.left);int rightHeight =minDepth(root.right);//递归逻辑//左子树为空,右子树不为空if(root.left==null && root.right!=null){return rightHeight+1;}//右子树为空,左子树不为空if(root.left!=null && root.right==null){return leftHeight+1;}//左右子树都不为空int result=Math.min(leftHeight,rightHeight)+1;return result;}

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

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

相关文章

Spring Boot 整合 Swagger3 如何生成接口文档?

前后端分离的项目,接口文档的存在十分重要。与手动编写接口文档不同,swagger是一个自动生成接口文档的工具,在需求不断变更的环境下,手动编写文档的效率实在太低。与新版的swagger3相比swagger2配置更少,使用更加方便。…

Rust 的智能指针

在 Rust 中,智能指针是一种特殊的数据结构,它不仅存储数据的地址,还提供了额外的功能,如自动内存管理、引用计数等。智能指针在 Rust 中非常重要,因为它们帮助开发者管理内存,同时保持代码的安全性和效率。…

Redis RDB 持久化:原理、触发方式与优缺点全解析

引言 作为 Redis 最经典的持久化机制之一,RDB(Redis DataBase)凭借高效的快照生成能力和快速的恢复速度,一直是开发者的心头好。但很多人对它的底层原理、触发时机和适用场景仍存在疑惑。今天咱们就对RDB进行全解析,帮…

设计模式精讲 Day 12:代理模式(Proxy Pattern)

【设计模式精讲 Day 12】代理模式(Proxy Pattern) 文章内容 在软件开发中,代理模式是一种常见的结构型设计模式,它通过引入一个代理对象来控制对真实对象的访问。这种模式不仅能够增强系统的安全性、灵活性和可扩展性&#xff0c…

企业级知识库私有化部署:腾讯混元+云容器服务TKE实战

1. 背景需求分析 在金融、医疗等数据敏感行业,企业需要构建完全自主可控的知识库系统。本文以某证券机构智能投研系统为原型,演示如何基于腾讯混元大模型与TKE容器服务实现: 千亿级参数模型的私有化部署金融领域垂直场景微调高并发低延迟推…

Qt事件系统详解

一、Qt事件系统概述 Qt事件系统是Qt框架中处理用户输入、窗口交互、定时器、异步操作等机制的核心。所有事件均继承自QEvent类,并通过事件循环(Event Loop)分发到目标对象。 事件系统基本概念 事件(Event):描述应用程序内部或外…

CPU性能篇-系统中出现大量不可中断进程和僵尸进程怎么办? Day 05

在上下文切换的文章中,学习并分析了系统 CPU 使用率高的问题,剩下的等待 I/O 的 CPU 使用率(以下简称为 iowait)升高,也是最常见的一个服务器性能问题。今天就来看一个多进程 I/O 的案例,并分析这种情况。 …

ASP.NET Core + Jenkins 实现自动化发布

一、安装Jenkins 我这边服务器是Linux CentOS 7 ,使用SSH 登录云服务器后,输入以下命令安装jenkins. sudo wget -O /etc/yum.repos.d/jenkins.repo \https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/red…

Java项目RestfulAPI设计最佳实践

大家好,我是锋哥。今天分享关于【Java项目RestfulAPI设计最佳实践】面试题。希望对大家有帮助; Java项目RestfulAPI设计最佳实践 超硬核AI学习资料,现在永久免费了! 设计一个高效、易维护的 Java 项目中的 RESTful API 涉及到一…

FANUC机器人教程:用户坐标系标定及其使用方法

目录 概述 工作站创建 任务描述 用户坐标系标定方法 用户坐标系标定操作 用户坐标系手动测试 用户坐标系在程序中的应用 用户坐标系选择指令介绍 机器人示教编程 仿真运行 仿真案例资源下载 概述 FANUC机器人的用户坐标系,是用户对每个作业空间定义的直…

动态库与静态库【Linux】

程序编译过程 源代码(.cpp) → 预处理(.i) → 编译(.s) → 汇编(.o) → 链接(可执行文件) g -o main.i -E main.cpp 参数说明: 参数功能输出文件类型-E仅预处理.i-S预处理 编译.s-c预处理 编译 汇编.o无完整流程(预处理→编译→汇编→链接&…

MySQL MHA 故障转移-VIP

MHA故障转移-VIP #手工在主库添加VIP ifconfig ens33:1 192.168.80.200/24配置VIP脚本 vim /usr/local/bin/master_ip_failoverchmod x /usr/local/bin/#!/usr/bin/env perl use strict; use warnings FATAL > all;use Getopt::Long;my ( $command, $ssh_user, $orig_mast…

Elasticsearch索引字段的类型

在 Elasticsearch 中,索引字段的类型(即 Mapping 中的字段类型)对搜索和存储性能影响很大。下面是各种常用数据类型的用途及推荐使用场景总结: 1. keyword 类型(精确匹配) 适合数据: 不需要分词…

kubernetes证书续签-使用kubeadm更新证书(下)

#作者:任少近 文章目录 查看kubelet证书查看kubelet当前所使用的证书 更换 node上的kubelet证书生成node1所需要的kubelet.conf文件生成node2所需要的kubelet.conf文件查看csr 更新 ~/.kube/config 文件重启相关组件 查看kubelet证书 以上少了kubelet的证书&#…

AI智能体长期记忆系统架构设计:从认知模型到生产实践

1 长期记忆:AI智能体的认知基石 1.1 人类记忆与AI记忆的类比 #mermaid-svg-VIPKAFe7VgN4UHFA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-VIPKAFe7VgN4UHFA .error-icon{fill:#552222;}#mermaid-svg-VIPKAFe7V…

快速上手:利用音频大模型与Java提取视频文案

文章目录 1、前言2、需求说明2.1 需求说明2.2 数据准备 3、功能实现3.1 使用视频理解大模型能力3.1.1 三方平台视频在线链接解析3.1.2 三方平台视频内网链接解析3.1.3 三方平台视频转存本地服务 3.2 使用音频识别大模型能力3.2.1 三方平台视频在线链接解析3.2.2 三方平台视频详…

LLM复杂记忆存储-多会话隔离案例实战

导读:在多用户并发的对话系统中,会话隔离问题往往成为开发者面临的技术难题。当数千个用户同时与AI助手交互时,如何确保每个用户的对话历史完全独立,避免数据混淆和隐私泄露? 本文深入剖析了基于RunnableWithMessageHi…

【PX4-AutoPilot教程-TIPS】PX4系统命令行控制台ConsolesShells常用命令(持续更新)

PX4系统命令行控制台 Consoles & Shells 常用命令 查看每个应用程序的堆栈使用情况获取所有可用命令和APP的列表应用程序启动、停止和状态查询查看本地文件系统查看剩余的可用RAM查看工作队列中正在运行的内容以及运行速率查看特定的uORB话题调试uORB话题进行模式切换和故障…

国内优秀wordpress主题推荐

在国内,WordPress 主题市场虽然不如国外那样庞大,但依然有许多优秀且适合中国用户需求的主题。以下是一些经过评估和推荐的国内优秀WordPress主题,涵盖不同类型的网站需求,如博客、企业官网、资源站、社区论坛等。 WP汉主题 WP汉…

第 6 章:进阶话题

第 6 章:进阶话题 过拟合vs欠拟合:模型复杂度和泛化能力的关系 在前面的章节中,我们已经学习了神经网络的基础知识、常见架构和基本训练流程。然而,在实际的深度学习项目中,仅仅掌握这些基础知识是不够的。我们还需要…