【代码随想录】算法训练计划15

news2024/11/29 16:42:47

兄弟们,写到了1点了快

1、层序遍历

题目:
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
在这里插入图片描述

思路:
  • 左侧也要加进去的,万有右侧没有看左侧
  • 取每层最后一个元素,原来是这样,呜呜,没想到啊,
  • 用的list.New,这也可以当队列用,wc,太好用了吧
  • 记录 queue.Len() 是为了弹出当前层的节点
func rightSideView(root *TreeNode) []int {
    //代码一刷,层序遍历
    if root == nil {
        return nil
    }
    res := []int{}
    queue := list.New()
    queue.PushBack(root)

    for queue.Len() != 0 {
        length := queue.Len()
        for i:=0; i<length; i++ {
            node := queue.Remove(queue.Front()).(*TreeNode)
            if node.Left != nil {
                queue.PushBack(node.Left) 
            }
            if node.Right != nil {
                queue.PushBack(node.Right) 
            } 

            if i==length-1 {
                res = append(res, node.Val)
            }
        }
    }
    return res
}

2、226. 翻转二叉树

题目:
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
在这里插入图片描述

思路:
  • 有递归,迭代,层序法
  • 递归,节点交换即可
func invertTree(root *TreeNode) *TreeNode {
    // 代码一刷,翻转,递归,中序
    if root == nil {
        return root
    }
    invertTree(root.Left)
    root.Left, root.Right = root.Right, root.Left
    invertTree(root.Left)
    return root
}

3、101. 对称二叉树

题目:
给你一个二叉树的根节点 root , 检查它是否轴对称。
在这里插入图片描述

思路:
  • 这个判断的条件,很有顺序的哦
  • 比较内外层元素是否相同,后序,下钻
func isSymmetric(root *TreeNode) bool {
    // 代码一刷,后序,递归,有点像反转二叉树哈
    return compare(root.Left, root.Right)
}
func compare(Left, Right *TreeNode) bool {
    if Left == nil && Right == nil {
        return true
    }
    if Left == nil || Right == nil {
        return false
    }
    if Left.Val != Right.Val {
        return false
    }
    return compare(Left.Right, Right.Left) && compare(Left.Left, Right.Right) // 内外层比较,结果返回上一层,后序下钻
}

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

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

相关文章

stm32 Bootloader设计(YModem协议)

stm32 Bootloader设计&#xff08;YModem协议&#xff09; Chapter1 stm32 Bootloader设计(YModem协议)YModem协议&#xff1a;STM32 Bootloader软件设计STM32 Bootloader使用方法准备工作stm32 Bootloader修改&#xff1a;stm32目标板程序.bin偏移地址修改&#xff1a; Chapt…

YOLO目标检测——铁轨裂纹检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;安全监控、智能驾驶、人机交互、智能城市数据集说明&#xff1a;&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;含有图片标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、…

Java对象的浅拷贝

介绍 Java对象的浅拷贝&#xff08;Shallow Copy&#xff09;是指创建一个新的对象&#xff0c;并复制原始对象的所有非静态字段到新对象。如果字段是基本类型&#xff0c;那么复制的就是基本类型的值。如果字段是引用类型&#xff0c;那么复制的就是引用&#xff0c;而不是引…

哪种小型洗衣机好用?迷你洗衣机品牌推荐

随着科技的快速发展&#xff0c;现在的人们越来越注重自己的卫生问题&#xff0c;不仅在吃上面会注重卫生问题&#xff0c;在用的上面也会更加严格要求&#xff0c;而衣服做为我们最贴身的东西&#xff0c;我们对它的要求也会更加高&#xff0c;所以最近这几年较火爆的无疑是内…

立体库堆垛机取货动作控制程序功能

取货动作功能块 为左出货台有货 DB11.DBX0.0 左出货台车就位 DB11.DBX0.2 右出货台车就位 DB11.DBX1.2 为右出货台有货 DB11.DBX1.0 左出货台车就位 DB11.DBX0.2 右出货台车就位 DB11.DBX1.2 T20上升保护时间

看这里!学习苹果手机更改锁屏密码的方法!

锁屏密码是用于保护设备与隐私安全的一项重要措施。用户设置锁屏密码后&#xff0c;在打开手机时需要输入正确的密码才能进入桌面。定期更改锁屏密码可以减少数据泄露的风险&#xff0c;那么&#xff0c;苹果手机更改锁屏密码&#xff1f;当您想要更改Apple设备的锁屏密码时&am…

createElement的用法

目录 一&#xff1a;介绍 二&#xff1a;语法与例子 1、语法 2、一些例子 例1&#xff1a; 例2&#xff1a; 例3&#xff1a; 3、第二种写法 一&#xff1a;介绍 document.createElement()是在对象中创建一个对象&#xff0c;要与appendChild() 或 insertBefore()方法…

js获取当前日期与7天后的日期

调用 console.log(this.getSectionData(7))结果 函数 getSectionData(section) {const now new Date()const nowYear now.getFullYear()const nowMonth now.getMonth() 1 < 10 ? (0 (now.getMonth() 1)) : (now.getMonth() 1)const nowDay now.getDate() < 1…

AJAX 入门笔记

课程地址 AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09; AJAX 不是新的编程语言&#xff0c;而是一种使用现有标准的新方法 AJAX 最大的优点是在不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部分网页内容 XML…

GIS入门,xyz地图瓦片是什么,xyz数据格式详解,如何发布离线XYZ瓦片到nginx或者tomcat中

XYZ介绍 XYZ瓦片是一种在线地图数据格式,由goole公司开发。 与其他瓦片地图类似,XYZ瓦片将地图数据分解为一系列小的图像块,以提高地图显示效率和性能。 XYZ瓦片提供了一种开放的地图平台,使开发者可以轻松地将地图集成到自己的应用程序中。同时,它还提供了高分辨率图像和…

RT-Thread 11. Scons 选择不同的编译器编译BSP

1.使用gcc编译工程&#xff0c;生成elf、bin文件 如果是 ARM 平台的芯片&#xff0c;则可以使用 Env 工具&#xff0c;输入 scons 命令直接编译 BSP&#xff0c;这时候默认使用的是 ARM GCC 编译器&#xff0c;因为 Env 工具带有 ARM GCC 编译器。 2.使用template.uvproj 生成…

conda不同环境pip list包都一样问题;conda国内镜像加速

1、conda不同环境pip list包都一样问题 注意是因为conda创建不同环境里用pip安装容易导致&#xff0c;因为pip install安装 python包管理大多都默认到一个地方&#xff0c;正常用conda install就会有隔离 参考&#xff1a;https://blog.csdn.net/tywwwww/article/details/127…

【组件自定义事件+全局事件总线+消息订阅与发布+TodoList案例——编辑+过度与动画】

组件自定义事件全局事件总线消息订阅与发布TodoList案例——编辑过度与动画 1 组件自定义事件1.1 绑定1.2 解绑1.3 总结1.4 TodoList案例——自定义事件 2 全局事件总线2.1 理解2.2 步骤2.3 TodoList案例——事件总线 3 消息订阅与发布3.1 理解3.2 TodoList案例——消息的订阅与…

OpenText Voltage 数据隐私和保护解决方案

隐私从统一数据发现开始&#xff0c;通过 Voltage Fusion 了解您的数据&#xff0c;保护您最重要的资产&#xff0c;通过默认隐私安全使用数据。 优点 1、内置数据隐私 Voltage Fusion 平台使用人工智能快速识别风险。 2、支持有效行动的见解 为基于策略的行动分析和分类数据。…

分享66个Python管理系统源代码总有一个是你想要的

分享66个Python管理系统源代码总有一个是你想要的 源码下载链接&#xff1a;https://pan.baidu.com/s/1FGmE9Q_NE1-cjjoxU540BQ?pwd8888 提取码&#xff1a;8888 项目名称 automobile-sales-management-system汽车销售管理系统 Python Vue BNUZ教务系统认证爬虫Python语言…

云服务器玲琅满目的时代,为什么我独爱Amazon EC2 云服务器?

前言 作为一名程序员&#xff0c;我们不管什么时候都离不开一个云服务器&#xff0c;我们可以将网站部署在云服务器上&#xff0c;实现网站的访问和运行&#xff0c;如果你是学生&#xff0c;那么你可以清晰的向面试官去展示你的项目来提升你面试的成功率&#xff0c;也可以去…

电脑设置在哪里?5招快速进入设置!

“作为一名电脑新手&#xff0c;在操作电脑时真的感觉很多东西不会。我想调整一下我的电脑屏幕&#xff0c;需要进入设置中对某些参数进行调整&#xff0c;但是我不知道电脑设置在哪里。请大神帮帮我吧&#xff01;” 电脑设置可以帮助用户解决各种电脑问题&#xff0c;我们可以…

【Java】IntelliJ IDEA使用JDBC连接MySQL数据库并写入数据

目录 0 准备工作1 创建Java项目2 添加JDBC 驱动程序3 创建数据库连接配置文件4 创建一个 Java 类来连接和操作数据库5 运行应用程序 在 IntelliJ IDEA 中连接 MySQL 数据库并将数据存储在数据表中&#xff0c;使用 Java 和 JDBC&#xff08;Java Database Connectivity&#xf…

AI:71-基于深度学习的植物叶片识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…