首页 > 其他分享 >104. 二叉树的最大深度

104. 二叉树的最大深度

时间:2022-12-15 17:01:05浏览次数:51  
标签:node right TreeNode self 二叉树 深度 root 104 left

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

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

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

示例:
给定二叉树 [3,9,20,null,null,15,7]
image

点击查看DFS的代码
class Solution:
    def maxDepth(self, root) -> int:
        if not root:
            return 0
        # 利用定义,计算左右子树的最大深度
        left = self.maxDepth(root.left)
        right = self.maxDepth(root.right)
        # 整棵树的最大深度等于左右子树的最大深度取最大值,然后再加上根节点自己
        return max(left, right) + 1

点击查看BFS的代码
class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if root is None:
            return 0
        q = deque([root])
        level = 0
        while q:
            n = len(q)
            for i in range(n):
                node = q.popleft()
                if node.left is not None:
                    q.append(node.left)
                if node.right is not None:
                    q.append(node.right)
            level += 1
        return level

点击查看pycharm-DFS代码
from collections import deque


class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None


class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if root is None:
            return 0
        q = deque([root])
        level = 0
        while q:
            n = len(q)
            for i in range(n):
                node = q.popleft()
                if node.left is not None:
                    q.append(node.left)
                if node.right is not None:
                    q.append(node.right)
            level += 1
        return level


if __name__ == '__main__':
    # 创建根节点
    root = TreeNode(3)
    # 插入左右子节点
    root.left = TreeNode(9)
    root.right = TreeNode(20)
    root.right.left = TreeNode(15)
    # 创建一个 Solution 对象
    solution = Solution()
    # 计算整棵树的
# 计算整棵树的最大深度
    depth = solution.maxDepth(root)
    print(depth)


点击查看pycharm-BFS代码
from collections import deque


class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None


class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if root is None:
            return 0
        q = deque([root])
        level = 0
        while q:
            n = len(q)
            for i in range(n):
                node = q.popleft()
                if node.left is not None:
                    q.append(node.left)
                if node.right is not None:
                    q.append(node.right)
            level += 1
        return level


if __name__ == '__main__':
    # 创建根节点
    root = TreeNode(3)
    # 插入左右子节点
    root.left = TreeNode(9)
    root.right = TreeNode(20)
    root.right.left = TreeNode(15)
    # 创建一个 Solution 对象
    solution = Solution()
    # 计算整棵树的
# 计算整棵树的最大深度
    depth = solution.maxDepth(root)
    print(depth)

总结

Python中collections模块(高性能集合操作)
deque([list]).popleft():弹出list最左侧的元素;
image

image

标签:node,right,TreeNode,self,二叉树,深度,root,104,left
From: https://www.cnblogs.com/xinxuann/p/16985465.html

相关文章

  • 深度学习 | MATLAB Deep Learning Toolbox convolution2dLayer 参数设定
    深度学习|MATLABDeepLearningToolboxconvolution2dLayer目录​​深度学习|MATLABDeepLearningToolboxconvolution2dLayer​​​​convolution2dLayer​​​​属......
  • 深度学习 | MATLAB Deep Learning Toolbox trainingOptions 参数设定
    深度学习|MATLABDeepLearningToolboxtrainingOptions设定训练参数trainingOptions运行环境MATLABDeepLearningToolbox是深度学习工具箱,可以构建LSTM(长短期记忆神......
  • 深度学习 | MATLAB Deep Learning Toolbox lstmLayer 参数设定
    深度学习|MATLABDeepLearningToolboxlstmLayer目录​​深度学习|MATLABDeepLearningToolboxlstmLayer​​​​lstmLayer​​​​网络特性​​​​案例分析​​......
  • 【DBN分类】基于哈里斯鹰算法优化深度置信网络HHO-DBN实现数据分类附matlab代码
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • 对称的二叉树
    请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。/***Definitionforabinarytreenode.*structTreeNode{*......
  • 二叉树的镜像
    输入一个二叉树,将它变换为它的镜像。 /***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*r......
  • 深度学习 《RNN模型》
    前言:前几篇博文里面我们学习了传统的BP神经网络,你可以称为她是全连接的网络,也可以称之为DNN(denistynextwork),也学习了卷积神经网络,在卷积神经网络里面还学习了池化等结构,并......
  • 深度学习《WGAN模型》
    WGAN是一个对原始GAN进行重大改进的网络主要是在如下方面做了改进实例测试代码如下:还是用我16张鸣人的照片搞一波事情,每一个上述的改进点,我再代码中都是用Difference标注......
  • 剑指Offer-Java-二叉树的镜像
    题目题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树8/\610/\/\57911......
  • 剑指Offer-Java-重建二叉树
    题目输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍......