代码随想录算法训练营第十二天| 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度 、111.二叉树的最小深度

226.翻转二叉树

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:听说一位巨佬面Google被拒了,因为没写出翻转二叉树 | LeetCode:226.翻转二叉树_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com, 这里刷题顺序,详细题解,应有尽有!, 视频播放量 99009、弹幕量 572、点赞数 1519、投硬币枚数 891、收藏人数 698、转发人数 94, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:二叉树的高度和深度有啥区别?究竟用什么遍历顺序?很多录友搞不懂 | LeetCode:104.二叉树的最大深度,怎么找二叉树的左下角? 递归中又带回溯了,怎么办?| LeetCode:513.找二叉树左下角的值,不愧是搜索树,这次搜索有方向了!| LeetCode:700.二叉搜索树中的搜索,一起操作两个二叉树?有点懵!| LeetCode:617.合并二叉树,贪心算法理论基础!,递归中带着回溯,你感受到了没?| LeetCode:257. 二叉树的所有路径,写出二叉树的非递归遍历很难么?这次再带你写出中序遍历的迭代法!|二叉树的非递归遍历 | 二叉树的遍历迭代法,构造平衡二叉搜索树!| LeetCode:108.将有序数组转换为二叉搜索树,看起来好像做过,一写就错! | LeetCode:111.二叉树的最小深度,带你学透回溯算法-组合问题(对应力扣题目:77.组合)| 回溯法精讲!icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1sP4y1f7q7

思路:前序遍历,交换遍历到的节点左右节点的地址。注意如果用中序遍历,则是先翻转遍历到的节点的左子树,再翻转遍历到的节点的左右节点地址,此时原来的左子树经交换地址已经变为右子树,所以不能再翻转右子树,而是再翻转左子树。

/**
 * 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) {
        invert(root);
        return root;
    }
    public void invert(TreeNode root) {
        if (root == null) {
            return;
        }
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
        invert(root.left);
        invert(root.right);

    }
}

101. 对称二叉树

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:新学期要从学习二叉树开始! | LeetCode:101. 对称二叉树_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com, 这里刷题顺序,详细题解,应有尽有!, 视频播放量 60563、弹幕量 669、点赞数 1585、投硬币枚数 1386、收藏人数 256、转发人数 62, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:当你过度准备了一场代码面试时……,一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解(马士兵),我更完了,你看完了吗?,手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找,不喜欢写代码怎么办???还有救么?,Leetcode力扣 1-300题视频讲解合集|手画图解版+代码【持续更新ing】,讲透二叉树的层序遍历 | 广度优先搜索 | LeetCode:102.二叉树的层序遍历,帮你把KMP算法学个通透!(理论篇),二叉树的高度和深度有啥区别?究竟用什么遍历顺序?很多录友搞不懂 | LeetCode:104.二叉树的最大深度,关于二叉树,你该了解这些!| 二叉树理论基础一网打尽,二叉树的种类、二叉树的存储方式、二叉树节点定义、二叉树的遍历顺序icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1ue4y1Y7Mf

思路: 利用后序先看左右子树是否翻转一样,左节点的右子树翻转过去变成右节点的左子树,所以在递归过程中,左节点的右子树与右节点的左子树比较,同理左节点的左子树与右节点的右子树比较。

/**
 * 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 isSymmetric(TreeNode root) {
         if (root == null) {
            return true;
        }
        return isSymmetric(root.left, root.right);
    }
    public boolean isSymmetric(TreeNode left, TreeNode right) {
        if (left == null && right != null) {
            return false;
        } else if (left != null && right == null) {
            return false;
        } else if (left == null && right == null) {
            return true;
        } else if (left.val != right.val) {
            return false;
        }
        //左右节点值一样,递归看左节点的左子树和右节点的右子树翻转是否一样
        boolean symmetric1 = isSymmetric(left.left, right.right);
        //同理
        boolean symmetric2 = isSymmetric(left.right, right.left);

        return symmetric1 && symmetric2;
    }
}

104.二叉树的最大深度

 题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录

视频讲解:二叉树的高度和深度有啥区别?究竟用什么遍历顺序?很多录友搞不懂 | LeetCode:104.二叉树的最大深度_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com, 这里刷题顺序,详细题解,应有尽有!, 视频播放量 65057、弹幕量 586、点赞数 1498、投硬币枚数 1136、收藏人数 344、转发人数 84, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:平衡二叉树(AVL树),一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解(马士兵),【数据结构】递归求二叉树的高度,递归求二叉树深度算法过程,数据结构算法训练--06求二叉树的高度(方法二),【纯干货】三分钟教会你遍历二叉树!学不会举报我!!,4.02.节点&子树&边&度&高度,平衡二叉树 两个考点。 一告诉节点数求树的最大高度 二时间复杂度,计算二叉树深度,计算机二级选择题树与二叉树icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1Gd4y1V75u

思路: 深度为节点到头节点的距离,高度为节点到叶子节点的距离。求深度一般用前序,求高度一般用后序。而最大深度又是最大高度,所以用后序求最大高度。

/**
 * 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 int maxDepth(TreeNode root) {
        return getHight(root);
    }
    public int getHight(TreeNode node) {
        if (node == null) {
            return 0;
        }
        int lhight = getHight(node.left);
        int rhight = getHight(node.right);

        return Math.max(lhight, rhight) + 1;
    }
}

111.二叉树的最小深度

题目链接:. - 力扣(LeetCode)

文章链接:代码随想录

视频链接:看起来好像做过,一写就错! | LeetCode:111.二叉树的最小深度_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com, 这里刷题顺序,详细题解,应有尽有!, 视频播放量 45545、弹幕量 409、点赞数 970、投硬币枚数 728、收藏人数 152、转发人数 42, 视频作者 代码随想录, 作者简介 哈工大师兄,在腾讯、百度搬过砖,代码随想录网站:programmercarl.com,相关视频:贪心算法理论基础!,写出二叉树的非递归遍历很难么?这次再带你写出中序遍历的迭代法!|二叉树的非递归遍历 | 二叉树的遍历迭代法,带你学透回溯算法-组合问题(对应力扣题目:77.组合)| 回溯法精讲!,怎么找二叉树的左下角? 递归中又带回溯了,怎么办?| LeetCode:513.找二叉树左下角的值,我更完了,你看完了吗?,要理解普通二叉树和完全二叉树的区别! | LeetCode:222.完全二叉树节点的数量,不愧是搜索树,这次搜索有方向了!| LeetCode:700.二叉搜索树中的搜索,二叉搜索树中,需要掌握如何双指针遍历!| LeetCode:530.二叉搜索树的最小绝对差,普大喜奔!二叉树章节已全部更完啦!| LeetCode:538.把二叉搜索树转换为累加树,你对二叉搜索树了解的还不够! | LeetCode:98.验证二叉搜索树icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1QD4y1B7e2

思路:方法一:用后序求跟节点到叶子节点的高度来求根节点到叶子节点的最短路径。

方法二:用层序遍历,利用了队列,如果队列弹出第一个左右子树均为空,那么这个就是叶子节点,则直接返回该节点所在层。

/**
 * 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 int minDepth(TreeNode root) {
        return getHight(root);
    }

    public int getHight(TreeNode node) {
        if (node == null) {
            return 0;
        }
        int lhight = getHight(node.left);
        int rhight = getHight(node.right);
        if (node.left == null && node.right != null) {
            return rhight + 1;
        }
        if (node.left != null && node.right == null) {
            return lhight + 1;
        }

        return Math.min(lhight, rhight) + 1;
    }
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024阿里云CTF Web writeup

《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect 前言 又是周末…

【CSS】CSS 样式重置 (normalize.css 和 reset.css) 和通用样式配置

一般来说,每一个项目初始化阶段都需要样式重置和样式定制化。样式重置最常用的就是 normalize.css 和 reset.css 这两个文件。 他们的区别: Normalize.css更加注重保留有用的浏览器默认样式,仅修复浏览器之间的不一致性,适用于需…

动态规划——两个数组的dp问题

目录 一、最长公共子序列 二、不同的子序列 三、通配符匹配 四、正则表达式匹配 五、两个字符串的最小ASCII删除和 六、最长重复子数组 七、交错字符串 一、最长公共子序列 最长公共子序列 第一步:确定状态表示 dp[i][j]:表示字符串 s1 的 [0&am…

安卓13默认连接wifi热点 android13默认连接wifi

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 有时候我们需要让固件里面内置好,相关的wifi的ssid和密码,让固件起来就可以连接wifi,不用在手动操作。 2.问题分析 这个功能,使用普通的安卓代码就可以实现了。 3.代…

Kubernetes:(三)Kubeadm搭建K8s 1.20集群

文章目录 一、Kubeadm安装流程二、实验1.环境准备2.所有节点安装kubeadm,kubelet和kubectl(除了Harbor节点)3.部署 Dashboard4.安装Harbor私有仓库 一、Kubeadm安装流程 集群名称IP地址安装软件master(2C/4G,cpu核心数…

杨传辉:云+AI 时代的一体化数据库|OceanBase发布会实录

在 2024 OceanBase 年度发布会 上, OceanBase CTO 杨传辉进行了主题为《云和 AI 时代的一体化数据库战略思考》的演讲,本文为演讲实录,欢迎阅读。 视频观看可点击:https://www.oceanbase.com/video/9001825 各位 OceanBase 的客…

ChatGPT变AI搜索引擎!以后还需要谷歌吗?

前言 在北京时间11月1日凌晨,正值ChatGPT两岁生日之际,OpenAI宣布推出最新的人工智能搜索体验!具备实时网络功能!与 Google 展开直接竞争。 ChatGPT搜索的推出标志着ChatGPT成功消除了即时信息这一最后的短板。 这项新功能可供 …

QT——记事本项目

目录 1.给pushButton按键添加图片 1.1 首先复制存放图片的文件夹,打开Qt回到编辑页面,右键单击pro文件选择在Explorer中显示,将图片文件夹粘贴进去你的代码同目录即可 1.2 创建一个新的文件夹 1.3 点击Add Files,将所有图片添加…

【在Linux世界中追寻伟大的One Piece】Socket编程TCP(续)

目录 1 -> V2 -Echo Server多进程版本 2 -> V3 -Echo Server多线程版本 3 -> V3-1 -多线程远程命令执行 4 -> V4 -Echo Server线程池版本 1 -> V2 -Echo Server多进程版本 通过每个请求,创建子进程的方式来支持多连接。 InetAddr.hpp #pragma…

为什么可视化大屏要有动态效果,都有哪些类型的效果。

可视化大屏已成为企业和组织展示关键信息的重要工具。这些大屏不仅需要清晰地传达数据,还要吸引观众的注意力并提供深刻的洞察。动态效果在这一过程中扮演着至关重要的角色。 动态效果的重要性 动态效果在可视化大屏中的应用,基于以下几个核心原因 吸…

【C/C++】字符/字符串函数(0)(补充)——由ctype.h提供

零.导言 除了字符分类函数,字符转换函数也是一类字符/字符串函数。 C语言提供了两种字符转换函数,分别是 toupper , tolower。 一.什么是字符转换函数? 顾名思义,即转换字符的函数,如大写字母转小写字母&am…

Hive数据库操作语法

数据类型 内部表和外部表 内部表 (CREATE TABLE table_name ......)未被external关键字修饰的即是内部表, 即普通表。 内部表又称管理表,内部表数据存储的位置由hive.metastore.warehouse.dir参数决定(默认:/user/h…

线程基础知识、jmm(Java内存模型)

目录 线程基础知识 并发与并行 进程和线程 线程优先级 创建线程的方式主要有三种 休眠 作出让步 join() 方法 线程协作注意什么 理解线程状态 选择合适的协作工具 共享资源的访问控制 避免竞争条件 创建线程几种方式 线程状态,状态之间切换 新建&…

图解大模型训练系列:序列并行2,DeepSpeed Ulysses

最近已有不少大厂都在秋招宣讲,也有一些已在 Offer 发放阶段了。 节前,我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行…

MP4650模块改为固定电压记录

目标 这种电源模块,可调电位器质量不太好,可调输出电压改为固定电压。 方法 步骤 按照下图,将计算得到的R1 补到 待添加电阻处。 结论 作者使用输出5V,R1电阻使用5.1K,得到输出电压4.8V; 测试输出电流1A…

51单片机教程(二)- 创建项目

1 创建项目 创建项目存储文件夹:C51Project 打开Keil5软件,选择 Project -> New uVision Project: 选择项目路径,即刚才创建的文件夹 选择芯片,选择 Microchip(微型集成电路)&#xff0…

STM32 HAL库 SPI驱动1.3寸 OLED屏幕

目录 参考硬件引脚与接线 点亮屏幕CubeMX 配置OLED 驱动程序代码 参考 基于STM32F103C8T6最小系统板HAL库CubeMX SPI驱动7针 OLED显示屏(0.96寸 1.3寸通用)0.96 oled HAL库驱动 SPI STM32SPI驱动0.96/1.3寸 OLED屏幕,易修改为DMA控制STM32驱…

通过分解质因数求若干个数的最小公倍数

求最小公倍数的常规方法回顾 暴力枚举法 long long work(long long a,long long b) {for(long long imax(a,b);;i)if(i%a0&&i%b0)return i; }大数翻倍法 long long work(long long a,long long b) {if(a<b) swap(a,b);for(long long ia;;ia) // i 是 a 的倍数&#…

突出显示与条件匹配的列值

Goto Appearance and Conditional Formatting 外观和条件格式 突出显示与条件匹配的列值 本教程说明如何将条件格式应用于 GridControl 中的 Market Share 列&#xff0c;以突出显示与特定条件匹配的单元格。此示例突出显示小于 20% 的 Market Share 列值。 要在设计时创建新…

node.js下载、安装、设置国内镜像源(永久)(Windows11)

目录 node-v20.18.0-x64工具下载安装设置国内镜像源&#xff08;永久&#xff09; node-v20.18.0-x64 工具 系统&#xff1a;Windows 11 下载 官网https://nodejs.org/zh-cn/download/package-manager 版本我是跟着老师选的node-v20.18.0-x64如图选择 Windows、x64、v20.18…