每日一练 —2022.02.23


一,二叉树的最大深度

1,程序简介

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

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

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

示例:

  • 给定二叉树 [3,9,20,null,null,15,7],
    3
/ \
9  20
/  \
15   7
  • 返回它的最大深度 3 。

2,程序代码

# -*- coding: utf-8 -*-
"""
Created on Wed Feb 23 16:36:41 2022
Function: 二叉树的最大深度
@author: 小梁aixj
"""
class TreeNode:
     def __init__(self, x):
         self.val = x
         self.left = None
         self.right = None
class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if root is None:
            return 0
        maxdepth = max(self.maxDepth(root.left),self.maxDepth(root.right)) + 1
        return maxdepth   

二,最大数

1,程序简介

给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

示例 1:

  • 输入:nums = [10,2]
  • 输出:“210”

示例 2:

  • 输入:nums = [3,30,34,5,9]
  • 输出:“9534330”

示例 3:

  • 输入:nums = [1]
  • 输出:“1”

示例 4:

  • 输入:nums = [10]
  • 输出:“10”

提示:

  • 1 <= nums.length <= 100
  • 0 < = n u m s [ i ] < = 1 0 9 0 <= nums[i] <= 10^9 0<=nums[i]<=109

2,程序代码

# -*- coding: utf-8 -*-
"""
Created on Wed Feb 23 16:37:15 2022
Function: 最大数
@author: 小梁aixj
"""
class Solution(object):
    def largestNumber(self, nums):
        n = len(nums)
        for i in range(n):
            for j in range(n - i - 1):
                temp_1 = str(nums[j])
                temp_2 = str(nums[j + 1])
                if int(temp_1 + temp_2) < int(temp_2 + temp_1):
                    temp = nums[j]
                    nums[j] = nums[j + 1]
                    nums[j + 1] = temp
        output = ""
        for num in nums:
            output = output + str(num)
        return str(int(output))

三,二叉树中的最大路径和

1,程序简介

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。

路径和 是路径中各节点值的总和。

给你一个二叉树的根节点 root ,返回其 最大路径和 。

示例 1:

在这里插入图片描述

  • 输入:root = [1,2,3]
  • 输出:6
  • 解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6

示例 2:

在这里插入图片描述

  • 输入:root = [-10,9,20,null,null,15,7]
  • 输出:42
  • 解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42

提示:

  • 树中节点数目范围是 [ 1 , 3 ∗ 1 0 4 ] [1, 3 * 10^4] [1,3104]
  • -1000 <= Node.val <= 1000

2,程序代码

# -*- coding: utf-8 -*-
"""
Created on Wed Feb 23 16:37:27 2022
Function: 二叉树中的最大路径和
@author: 小梁aixj
"""
class Solution:
    def __init__(self):
        self.result = float("-inf")
    def maxPathSum(self, root: TreeNode) -> int:
        if root == None:
            return 0
        self.getMax(root)
        return self.result
    def getMax(self, root):
        if root == None:
            return 0
        left = max(0, self.getMax(root.left))
        right = max(0, self.getMax(root.right))
        self.result = max(self.result, left + right + root.val)
        return max(left, right) + root.val
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梁辰兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值