文章目录
一,二叉树的最大深度
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,3∗104]
- -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