首页 > 其他分享 >111. 二叉树的最小深度

111. 二叉树的最小深度

时间:2024-10-19 10:47:38浏览次数:7  
标签:None right self 最小 111 二叉树 root left

在这里插入图片描述
思路

递归时考虑几种情况:
1.左右子树都为空,则最小深度=1(只有根节点)(也可理解为 min(0,0)+1)
2.左子树为空,右子树不空,则最小深度=右子树最小深度+1
3.左子树不为空,右子树为空,最小深度=左子树最小深度+1
4.左右子树不为空,最小深度=左右子树最小深度+1
+1原因:递归的是左右子树,找到最小深度后,还要加上根节点即为整个二叉树的最小深度

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):
    def minDepth(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: int
        """
        if root is None:
            return 0
        #左右子树为空
        if root.left is None and root.right is None:
            return 1
        #左子树为空情况
        if root.left is None and root.right is not None:
            return self.minDepth(root.right)+1
        #右子树为空情况
        if root.left is not None and root.right is None:
            return self.minDepth(root.left)+1
        #左右子树不为空情况
        return min(self.minDepth(root.left),self.minDepth(root.right))+1

标签:None,right,self,最小,111,二叉树,root,left
From: https://blog.csdn.net/huanxianxianshi/article/details/143068857

相关文章

  • 代码随想录算法训练营day18 |530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数
    学习资料:https://programmercarl.com/0530.二叉搜索树的最小绝对差.html530.二叉搜索树的最小绝对差(双指针法,pre&cur,设置最小差值初始为无穷大,当差值<最小差值就更新最小差值)点击查看代码#Definitionforabinarytreenode.#classTreeNode(object):#def__init__(......
  • 二叉树和度为二的有序树的区别
    一、定义与结构度为二的有序树:在这种树结构中,每个节点最多有两个子节点。子节点的顺序是重要的,即使两个子节点的值相同,只要他们的位置不同,他们就被视为是不同的子节点。当一个节点只有一个子节点时,该子节点的位置(左或右)并无特定要求,也即无需区分其左右次序。二叉树:二叉树......
  • 推断二叉树(进阶)
    Description给出一棵二叉树的中序遍历和每个节点的父节点,求这棵二叉树的先序和后序遍历。Input输入第一行为一个正整数n表示二叉树的节点数目,节点编号从1到n,其中1为根节点。第2行有n个数字,第i个数字表示i的父亲节点。(1的父亲节点为0,表示无)第3行为中......
  • B+树、红黑树、平衡二叉树
    1.概述这三种数据结构都用于解决动态查找问题,即能够在插入、删除的同时保持高效的查找性能。它们广泛应用于数据库、文件系统、内存管理等领域。但它们的具体结构和应用场景有所不同。B+树(B+Tree):B+树是一种自平衡的多叉树,常用于数据库系统和文件系统中。它的特点是所有......
  • 解锁二叉树的魅力:链式实现详解
    前言二叉树的简介及顺序实现引言在数据结构的浩瀚星空中,二叉树如同一颗璀璨的明珠,其优雅的结构和强大的功能使其成为计算机科学中不可或缺的工具。从数据库索引到编译器的语法树,二叉树以其独特的方式支撑着许多核心算法与数据处理。本文将深入探讨如何使用C语言实现二叉树的......
  • 111. 二叉树的最小深度【二叉树】
    文章目录111.二叉树的最小深度解题思路111.二叉树的最小深度111.二叉树的最小深度给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例1:输入:root=[3,9,20,null,null,15,7]......
  • 二叉树的中序遍历
    给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]提示:树中节点数目在范围 [0,100] 内-100<=Node.val<=100进阶: 递归算法很简单,你可以通......
  • 109. 有序链表转换二叉搜索树【二叉树】
    文章目录109.有序链表转换二叉搜索树解题思路Go代码109.有序链表转换二叉搜索树109.有序链表转换二叉搜索树给定一个单链表的头节点head,其中的元素按升序排序,将其转换为平衡二叉搜索树。平衡二叉树是指该树所有节点的左右子树的深度相差不超过1。示例......
  • 最小生成树(Minimum Spanning Tree,MST)初步
    定义连通图的最小生成树(MinimumSpanningTree,MST)为边权和最小的生成树。注意:只有连通图才有生成树,而对于非连通图,只存在生成森林。思路分为Kruskal与Prim两种算法。Kruskal从最小边权的边开始,按边权从小到大依次遍历。若当前边连接的两点不连通,加入此边。Prim每次选......
  • 七、二叉树之链式结构(递归)
    一、前序:前面章节所说二叉树的结构其实是递归的,为什么这样说呢?根节点有左右子树,根节点的左右孩子又有左右子树,以此类推,直到叶子节点,它的左右子树为NULL,开始返回。所以,我们把它分成一个又一个的子树来分析。因此,它的结构是递归的。因为一开始接触二叉树,还不是熟悉,我们先来手动......