【二叉树】刷题(以递归写法为主)

news2024/12/23 17:25:55

226.翻转二叉树
101. 对称二叉树
104.二叉树的最大深度
111.二叉树的最小深度
222.完全二叉树的节点个数
110.平衡二叉树
102. 二叉树的所有路径

226.翻转二叉树

在这里插入图片描述

class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        if not root:
            return 
        tmp =  root.left
        root.left = root.right
        root.right = tmp
        self.invertTree(root.left)
        self.invertTree(root.right)
        return root

101. 对称二叉树

在这里插入图片描述

class Solution:
    def left_right(self, left, right):
        if (not left and right) or (not right and left):
            return False
        if not left and not right:
            return True
        if left.val != right.val:
            return False
        if self.left_right(left.left, right.right) and self.left_right(left.right, right.left):
            return True
        return False

    def isSymmetric(self, root: Optional[TreeNode]) -> bool:
        if not root.left and not root.right:
            return True
        if not root.left or not root.right:
            return False
        return self.left_right(root.left, root.right)

104.二叉树的最大深度

在这里插入图片描述

class Solution:
    def maxDepth(self, root: Optional[TreeNode]) -> int:
        res_mid = []

        def bfs(node, level, res_mid):
            if not node:
                return
            if len(res_mid) == level:
                res_mid.append([])
            res_mid[level].append(node.val)
            bfs(node.left, level + 1, res_mid)
            bfs(node.right, level + 1, res_mid)

        bfs(root, 0, res_mid)
        
        return len(res_mid)

111.二叉树的最小深度

在这里插入图片描述

class Solution:
    def minDepth(self, root: Optional[TreeNode]) -> int:
        if not root:
            return 0
        if not root.left and not root.right:
            return 1
        if not root.left:
            min_depth = self.minDepth(root.right)+1
        if not root.right:
            min_depth = self.minDepth(root.left)+1
        if root.left and root.right:
            left = self.minDepth(root.left)+1
            right = self.minDepth(root.right)+1
            min_depth = min(left,right)
        return min_depth

222.完全二叉树的节点个数

在这里插入图片描述

class Solution:
    def countNodes(self, root: Optional[TreeNode]) -> int:
        res = []
        def bfs(node,level,res):
            if not node:
                return
            if len(res) == level:
                res.append([])
                
            res[level].append(node.val)
            bfs(node.left,level+1,res)
            bfs(node.right,level+1,res)
        bfs(root,0,res)
        final = []
        for i in res:
            for j in i:
                final.append(j)
        return len(final)

110.平衡二叉树

在这里插入图片描述

class Solution:
    def height(self, node):  # 自下而上
        if not node:
            return 1
        left_height = self.height(node.left)
        right_height = self.height(node.right)
        if left_height == -1:
            return -1
        if right_height == -1:
            return -1
        if abs(left_height - right_height) > 1:
            return -1
        else:
            return 1 + max(left_height, right_height)


    def isBalanced(self, root: Optional[TreeNode]) -> bool:
        if self.height(root)!=-1:
            return True
        else:
            return False

257. 二叉树的所有路径

在这里插入图片描述

class Solution:
    def binaryTreePaths(self, root: Optional[TreeNode]) -> List[str]:
        res = []
        if not root:
            return res
        
        def dfs(root,path):
            path += str(root.val)+'->'
            if not root.left and not root.right:
                res.append(path[:-2])
                return
            if root.left:
                dfs(root.left,path)
            if root.right:
                dfs(root.right,path)
        dfs(root,'')
        return res

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

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

相关文章

13、PHP面向对象2(方法的访问控制、子类继承、常量)

1、类中的方法可以被定义为公有,私有或受保护。如果没有设置这些关键字,则该方法默认为公有。 public定义的方法,可以在类外使用。 protected定义的方法,只能在本类或子类的定义内使用。 private定义的方法,只能在本…

第八章 非编码RNA简介

第八章 非编码RNA简介 第一节 引言 第二节 长链非编码RNA简介 第三节 环形RNA简介 第四节 小RNA简介 4.1 miRNA 4.2 piRNA 4.3 小RNA数据分析

图像篡改及防篡改

有时候我们是攻击方,发送被网站或微信屏蔽的敏感图像,分享瓜时剔除可能暴露的个人信息,在平台分享其他平台的购物记录 有时候我们是防守方,判断他人给的图有没有造假嫌疑,判断是不是网图盗图 调研了图像造假的判别方案…

soft ip与hard ip

ip分soft和hard两种,soft就是纯代码,买过来要自己综合自己pr。hard ip如mem和analog与工艺有关。 mem的lib和lef是memory compiler产生的,基于bitcell,是foundry给的。 我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起…

C语言假期作业 DAY 03

目录 题目 一、选择题 1、已知函数的原型是: int fun(char b[10], int *a); ,设定义: char c[10];int d; ,正确的调用语句是( ) 2、请问下列表达式哪些会被编译器禁止【多选】( ) 3、…

Upload文件导入多条数据到输入框

需求场景:文本框内容支持批量导入(文件类型包括’.txt, .xls, .xlsx’)。使用AntD的Upload组件处理。 下面是Upload的配置(伪代码),重点为beforeUpload中的逻辑 // Antd 中用到的Upload组件 import { UploadOutlined } from ant…

ADSCOPE加入中国互联网协会!

近日,经协会批准,ADSCOPE(上海倍孜网络技术有限公司)正式加入中国互联网协会,成为会员单位。 中国互联网协会隶属于中华人民共和国工业和信息化部,是由中国互联网行业及与互联网相关的企事业单位、社会组织…

网络编程--模拟HTTP服务器

下面是一个简单的例子&#xff0c;来模拟HTTP服务器 这里只是简单的按照 HTTP 协议来构造数据 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/wait.h> #include <string.h> #include <arpa/inet.h>//处理连…

牛客30道Java专项练习-错题-01

一、Java初始化过程&#xff1a; 初始化父类种的静态成员变量和静态代码块&#xff0c;顺序执行初始化子类种的静态成员变量和静态代码块&#xff0c;顺序执行初始化父类的普通成员变量和代码块&#xff0c;再执行父类的构造函数初始化子类的成员变量和代码块&#xff0c;在执…

2024考研408-计算机网络 第一章-计算机网络体系结构学习笔记.md

文章目录 前言一、计算机网络概述1.1、概念及功能1.1.1、计算机网络的概念1.1.2、计算机网络的功能功能1、数据通信功能2、资源共享功能3、分布式处理功能4、提高可靠性&#xff08;分布式处理引申功能&#xff09;功能5、负载均衡&#xff08;也是分布式处理引申功能&#xff…

Javascript Object学习1

JavaScript原生提供一个Object对象&#xff0c;O大写&#xff0c;所有其他对象都继承自这个对象&#xff1b; Object本身也是一个构造函数&#xff0c;可以直接通过它来生成新对象&#xff1b; 对象的初始化有两种方式&#xff0c;构造函数模式和字面量模式&#xff1b; 下面对…

Meta分析的选题与文献计量分析CiteSpace应用丨R语言Meta分析【数据清洗、精美作图、回归分析、诊断分析、不确定性及贝叶斯应用】

目录 ​专题一、Meta分析的选题与文献计量分析CiteSpace应用 专题二、Meta分析与R语言数据清洗及相关应用 专题三、R语言Meta分析与精美作图 专题四、R语言Meta回归分析 专题五、R语言Meta诊断分析与进阶 专题六、R语言Meta分析的不确定性及贝叶斯应用 专题七、深度拓展…

innovus修short脚本

innovus版脚本分享&#xff1a; deselectAll foreach short [dbGet [dbGet top.markers.subType Short] -p] { set box [dbGet $short.box] set layer [dbGet $short.layer.name] select_obj [dbGet [dbQuery -area $box -layer $layer -objectType wire].net.is CTS clock 0…

SpringBoot 集成 EasyExcel 3.x 优雅实现 Excel 导入导出

介绍 EasyExcel 是一个基于 Java 的、快速、简洁、解决大文件内存溢出的 Excel 处理工具。它能让你在不用考虑性能、内存的等因素的情况下&#xff0c;快速完成 Excel 的读、写等功能。 EasyExcel文档地址&#xff1a; https://easyexcel.opensource.alibaba.com/ 快速开始 …

Generative Diffusion Prior for Unified Image Restoration and Enhancement 论文阅读笔记

这是CVPR2023的一篇用diffusion先验做图像修复和图像增强的论文 之前有一篇工作做了diffusion先验&#xff08;Bahjat Kawar, Michael Elad, Stefano Ermon, and Jiaming Song, “Denoising diffusion restoration models,” arXiv preprint arXiv:2201.11793, 2022. 2, 4, 6,…

6. Spring Boot 的创建和使用

目录 1. 什么是 Spring Boot 2. Spring Boot 的优点 3. Spring Boot 项目的创建 3.1 使用 Idea 创建 3.2 网页版创建 4. 项目介绍和运行 4.1 运行项目 4.2 通过浏览器输出 5. 注意事项 1. 什么是 Spring Boot Spring 的诞生是为了简化 Java 程序的开发的&#xff0c…

100、用简洁的语言描述一下:TCP的三次握手和四次挥手(不需要长篇大论)

TCP的三次握手和四次挥手 TCP协议是7层网络协议中的传输层协议&#xff0c;负责数据的可靠传输。 1、三次握手 在建立TCP连接时&#xff0c;需要通过三次握手来建立&#xff0c;过程是: 客户端向服务端发送一个SYN服务端接收到SYN后&#xff0c;给客户端发送一个SYN_ACK客户…

leetcode 852. Peak Index in a Mountain Array(峰值索引)

一个数组保证是峰值数组&#xff08;存在一个值大于左边和右边部分数组&#xff09;&#xff0c;找出峰值的index。 要求时间复杂度在O(logn)。 思路&#xff1a; 时间复杂度为O(logn), 可以想到用binary search. 其实用O(n)的找最大值也能通过。 public int peakIndexInMou…

PysparkNote006---pycharm加载spark环境

pycharm配置pyspark环境&#xff0c;本地执行pyspark代码 spark安装、添加环境变量不提了 File-Settings-Project-Project Structure-add content root添加如下两个路径 D:\code\spark\python\lib\py4j-0.10.7-src.zipD:\code\spark\python\lib\pyspark.zip 2023-07-26 阴 于…

Python 基础总结

title: Python 基础总结 date: 2023-07-19 10:51:55 tags: Python categories:Python cover: https://cover.png feature: false 1. print() 函数 1.1 基础使用 # 输出数字 print(23) print(11.323)# 输出字符串 print(你好) print("你好")# 输出表达式 print(3 *…