LeetCode ——二叉树篇(三)

 刷题顺序及思路来源于代码随想录,网站地址:https://programmercarl.com 

 二叉树的定义及创建见:

LeetCode ACM模式——二叉树篇(一)_要向着光的博客-CSDN博客

目录

116. 填充每个节点的下一个右侧节点指针

117. 填充每个节点的下一个右侧节点指针 II

 104. 二叉树的最大深度

 111. 二叉树的最小深度

  226. 翻转二叉树

116. 填充每个节点的下一个右侧节点指针

给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:

struct Node {int val;Node *left;Node *right;Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL

初始状态下,所有 next 指针都被设置为 NULL

/*
// Definition for a Node.
class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, Node _left, Node _right, Node _next) {val = _val;left = _left;right = _right;next = _next;}
};
*/class Solution {public Node connect(Node root) {Deque<Node> que=new ArrayDeque<>();if(root==null){return null;}que.offer(root);while(!que.isEmpty()){int size=que.size();Node preNode=null;Node node=null;for (int i = 0; i < size; i++) {if(i==0){//取出本层头部结点preNode=que.poll();node=preNode;}else{node=que.poll();preNode.next=node;preNode=node;}if(node.left!=null){que.offer(node.left);}if(node.right!=null){que.offer(node.right);}}preNode.next=null; //本层最后一个节点指向null}return root;}
}


117. 填充每个节点的下一个右侧节点指针 II

给定一个二叉树:

struct Node {int val;Node *left;Node *right;Node *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。

初始状态下,所有 next 指针都被设置为 NULL 。

/*
// Definition for a Node.
class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, Node _left, Node _right, Node _next) {val = _val;left = _left;right = _right;next = _next;}
};
*/class Solution {public Node connect(Node root) {Deque<Node> que=new ArrayDeque<>();if(root==null){return null;}que.offer(root);while(!que.isEmpty()){int size=que.size();Node preNode=null;Node node=null;for (int i = 0; i < size; i++) {if(i==0){//取出本层头部结点preNode=que.poll();node=preNode;}else{node=que.poll();preNode.next=node;preNode=node;}if(node.left!=null){que.offer(node.left);}if(node.right!=null){que.offer(node.right);}}preNode.next=null; //本层最后一个节点指向null}return root;}
}

 104. 二叉树的最大深度

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

import java.util.ArrayDeque;
import java.util.Deque;/*** @author light* @Description 二叉树的最大深度** 给定一个二叉树 root ,返回其最大深度。* 二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。* @create 2023-08-16 16:46*/
public class MaxDepthTest {public static void main(String[] args) {Integer[] arr={3,9,20,null,null,15,7};BinaryTree2 tree2=new BinaryTree2(arr); //按数组方式创建二叉树System.out.println(maxDepth(tree2.root));}public static int maxDepth(TreeNode root) {Deque<TreeNode> que=new ArrayDeque<>();if(root!=null){que.offer(root);}int depth=0;while(!que.isEmpty()){int size=que.size();while(size>0){TreeNode node=que.poll();if(node.left!=null){que.offer(node.left);}if(node.right!=null){que.offer(node.right);}size--;if(size==0){depth++;}}}return depth;}
}

 111. 二叉树的最小深度

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。

import java.util.ArrayDeque;
import java.util.Deque;/*** @author light* @Description 二叉树的最小深度** 给定一个二叉树,找出其最小深度。* 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。* 说明:叶子节点是指没有子节点的节点。* @create 2023-08-16 16:58*/
public class MinDepthTest {public static void main(String[] args) {Integer[] arr={3,9,20,null,null,15,7};BinaryTree2 tree2=new BinaryTree2(arr); //按数组方式创建二叉树System.out.println(minDepth(tree2.root));}public static int minDepth(TreeNode root) {Deque<TreeNode> que=new ArrayDeque<>();int depth=0;if(root!=null){que.offer(root);depth++;}while(!que.isEmpty()){int size=que.size();while(size>0){TreeNode node=que.poll();if(node.left==null&&node.right==null){return depth;}if(node.left!=null){que.offer(node.left);}if(node.right!=null){que.offer(node.right);}size--;if(size==0){depth++;}}}return depth;}
}

  226. 翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

 

/*** 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 invertTree(TreeNode root) {Deque<TreeNode> que=new ArrayDeque<>();if(root!=null){que.offer(root);}while(!que.isEmpty()){int size=que.size();while(size>0){TreeNode node=que.poll();swap(node);if(node.left!=null){que.offer(node.left);}if(node.right!=null){que.offer(node.right);}size--;}}return root;}private  void swap(TreeNode root) {TreeNode temp=root.left;root.left=root.right;root.right=temp;}}

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

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

相关文章

Maven介绍_下载_安装_使用_原理

文章目录 1 Maven介绍1.1 Maven的介绍1.2 Maven的作用 2 Maven下载与安装2.1 官网下载2.2 文件目录2.3 环境配置 3 Maven基础概念3.1 仓库分类3.2 依赖坐标3.3 坐标组成 4 Maven配置4.1 本地仓库配置4.2 远程仓库的设置4.3 镜像仓库配置4.4 IDEA配置Maven 5 Maven项目创建5.1 M…

LaWGPT零基础部署win10+anaconda

准备代码&#xff0c;创建环境 # 下载代码 git clone https://github.com/pengxiao-song/LaWGPT cd LaWGPT # 创建环境 conda create -n lawgpt python3.10 -y conda activate lawgpt pip install -r requirements.txt # 启动可视化脚本&#xff08;自动下载预训练模型约15GB…

回归预测 | MATLAB实现BiLSTM双向长短期记忆神经网络多输入多输出预测

回归预测 | MATLAB实现BiLSTM双向长短期记忆神经网络多输入多输出预测 目录 回归预测 | MATLAB实现BiLSTM双向长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现BiLSTM双向长短期记忆神经网络多输入多输出预测&#x…

第二讲:BeanFactory的实现

BeanFactory的实现 1. 环境准备2. 初始化DefaultListableBeanFactory3. 手动注册BeanDefinition4. 手动添加后置处理器5. 获取被依赖注入的Bean对象6. 让所有的单例bean初始化时加载7. 总结 Spring 的发展历史较为悠久&#xff0c;因此很多资料还在讲解它较旧的实现&#xff0c…

时序预测 | MATLAB实现基于CNN-BiLSTM卷积双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-BiLSTM卷积双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-BiLSTM卷积双向长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍…

iTOP-RK3568开发板ubuntu环境下安装Eclipse

eclipse 是使用 Java 语言开发的&#xff0c;一个 Java 应用程序&#xff0c;这意味着 eclipse 只能运行在 Java虚拟机上。倘若没有安装 JDK&#xff08;Java Development Kit&#xff09;&#xff0c;即使在 ubuntu 上安装了 eclipse&#xff0c;也不能运行&#xff0c;所以要…

正则表达式在PHP8中的应用案例-PHP8知识详解

正则表达式在php8中有许多应用案例。以下是一些常见的应用场景&#xff1a;如数据验证、数据提取、数据替换、url路由、文本搜索和过滤等。 1、数据验证 使用正则表达式可以对用户输入的数据进行验证&#xff0c;例如验证邮箱地址、手机号码、密码强度等。 下面是一个用正则表…

漏洞指北-VulFocus靶场专栏-入门

漏洞指北-VulFocus靶场01-入门 VulFocus靶场前置条件&#xff1a;入门001 命令执行漏洞step1&#xff1a; 输入默认index的提示step2&#xff1a; 入门002 目录浏览漏洞step1&#xff1a;进入默认页面&#xff0c;找到tmp目录step2 进入tmp目录获取flag文件 VulFocus靶场前置条…

GuLi商城-前端基础Vue指令-单向绑定双向绑定

什么是指令? 指令 (Directives) 是带有 v- 前缀的特殊特性。 指令特性的预期值是:单个 JavaScript 表达式。 指令的职责是&#xff0c;当表达式的值改变时&#xff0c;将其产生的连带影响&#xff0c;响应式地作用于DOM 例如我们在入门案例中的 v-on&#xff0c;代表绑定事…

抓住WhatsApp 营销风口,做全球电商领跑者

您的电子邮件营销活动效果是否一直不理想&#xff1f;不妨考虑 WhatsApp营销&#xff0c;一种实时通讯营销&#xff0c;可帮助企业接触更广泛的受众&#xff0c;与客户建立个人联系并最终增加销售额。还可以再借助具有强大功能的全渠道客户服务工具&#xff0c;例如SaleSmartly…

idea插件推荐——mybatis log plugin快速查看运行SQL

我们在编写代码的时候一定会编写SQL&#xff0c;简单的SQL我们一般不会出错但是如果遇到了mybatis中的复杂动态SQL&#xff0c;我们可能就会出现一些问题&#xff0c;为了在开发自测阶段及时发现处理问题&#xff0c;我们需要快速查看编译得到的SQL&#xff0c; log4j 的打印的…

[Go版]算法通关村第十三关青铜——数字数学问题之统计问题、溢出问题、进制问题

这里写自定义目录标题 数字统计专题题目&#xff1a;数组元素积的符号思路分析&#xff1a;无需真计算&#xff0c;只需判断负数个数是奇是偶复杂度&#xff1a;时间复杂度 O ( n ) O(n) O(n)、空间复杂度 O ( 1 ) O(1) O(1)Go代码 题目&#xff1a;阶乘尾数0的个数思路分析&am…

​怎么将物理机硬盘克隆到虚拟机?

​用户案例&#xff1a;克隆后的硬盘是否能用于虚拟机&#xff1f; “我有一台安装了Windows10的计算机&#xff0c;现在正在尝试克隆电脑上的硬盘。然后我想把这个硬盘放在自己的虚拟机中使用&#xff0c;这样我就可以从克隆的硬盘中启动相同的Windows10系统。” …

最新消息:谷歌将在Chromebook上运用UWB技术,无线通信更上一层

超宽带&#xff08;UWB&#xff09;技术是一种创新的短距离无线通信技术&#xff0c;具有高速数据传输和精确定位物体位置的优势。尽管该技术已经存在一段时间&#xff0c;但最近开始广泛应用于各种设备中。据最新报道&#xff0c;Pixel Watch 2可能会搭载UWB模块&#xff0c;这…

RTSP/Onvif流媒体服务器EasyNVR安防视频平台一直提示网络请求失败的问题解决方案

EasyNVR平台优秀的视频能力在于通过RTSP/ONVIF协议&#xff0c;将前端接入设备的音视频资源进行采集&#xff0c;并转码成适合全平台、全终端分发的视频流格式&#xff0c;包括RTMP、RTSP、FLV、HLS、WebRTC等格式。 有用户反馈&#xff0c;EasyNVR使用过程中&#xff0c;突然提…

Redis进阶底层原理- Redis结构图与底层数据编码结构

Redis底层原理篇&#xff0c;​让学习绚丽多彩起来&#xff01;&#xff01;&#xff01;&#xff08;需要原图私信&#xff09;

四川天蝶电子商务:2023短视频运营分析

短视频运营分析是指通过对短视频平台上的各种数据进行收集、整理和分析&#xff0c;以寻找出视频内容、用户活跃度、用户行为等方面的规律和问题&#xff0c;从而为短视频平台的运营决策提供依据。下面将从几个方面具体介绍短视频运营分析的重要性和方法。 首先&#xff0c;短…

无涯教程-PHP - 常量声明

常量值不能更改。默认情况下&#xff0c;常量区分大小写。按照约定&#xff0c;常量标识符始终为大写。与变量不同&#xff0c;您不需要具有"$"的常量。 constant 函数 如名称所示&#xff0c;此函数将返回常量的值。 当您要检索常量的值但不知道其名称时&#xf…

windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】

windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务&#xff0c;并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…

【旅游度假】Axure酒店在线预订APP原型图 旅游度假子模块原型模板

作品概况 页面数量&#xff1a;共 10 页 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;旅游度假&#xff0c;生活服务 作品申明&#xff1a;页面内容仅用于功能演示&#xff0c;无实际功能 作品特色 本作品为「酒店在线预订」的移动端…