Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc86aa1c

Browse files
committed
add new solution
1 parent0ea08b3 commitc86aa1c

File tree

5 files changed

+151
-140
lines changed

5 files changed

+151
-140
lines changed

‎script/leetcode/editor/cn/doc/[124]二叉树中的最大路径和.pyrenamed to‎script/[124]二叉树中的最大路径和.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@
2727
# 提示:
2828
#
2929
#
30-
# 树中节点数目范围是 [1, 3 *10⁴]
30+
# 树中节点数目范围是 [1, 3 *104]
3131
# -1000 <= Node.val <= 1000
3232
#
33-
# Related Topics 树 深度优先搜索 动态规划 二叉树 👍 1657 👎 0
33+
# Related Topics 树 深度优先搜索 动态规划 二叉树
34+
# 👍 1663 👎 0
3435

3536

3637
# leetcode submit region begin(Prohibit modification and deletion)
@@ -42,4 +43,16 @@
4243
# self.right = right
4344
classSolution:
4445
defmaxPathSum(self,root:Optional[TreeNode])->int:
46+
maxpath=-2**31
47+
48+
defdfs(root):
49+
nonlocalmaxpath
50+
ifnotroot:
51+
return0
52+
left=max(dfs(root.left),0)
53+
right=max(dfs(root.right),0)
54+
maxpath=max(left+right+root.val,maxpath)
55+
returnmax(left,right)+root.val
56+
dfs(root)
57+
returnmaxpath
4558
# leetcode submit region end(Prohibit modification and deletion)

‎script/[654]最大二叉树.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:
2+
#
3+
#
4+
# 创建一个根节点,其值为 nums 中的最大值。
5+
# 递归地在最大值 左边 的 子数组前缀上 构建左子树。
6+
# 递归地在最大值 右边 的 子数组后缀上 构建右子树。
7+
#
8+
#
9+
# 返回 nums 构建的 最大二叉树 。
10+
#
11+
#
12+
#
13+
# 示例 1:
14+
#
15+
#
16+
# 输入:nums = [3,2,1,6,0,5]
17+
# 输出:[6,3,5,null,2,0,null,null,1]
18+
# 解释:递归调用如下所示:
19+
# - [3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5] 。
20+
# - [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1] 。
21+
# - 空数组,无子节点。
22+
# - [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1] 。
23+
# - 空数组,无子节点。
24+
# - 只有一个元素,所以子节点是一个值为 1 的节点。
25+
# - [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 [] 。
26+
# - 只有一个元素,所以子节点是一个值为 0 的节点。
27+
# - 空数组,无子节点。
28+
#
29+
#
30+
# 示例 2:
31+
#
32+
#
33+
# 输入:nums = [3,2,1]
34+
# 输出:[3,null,2,null,1]
35+
#
36+
#
37+
#
38+
#
39+
# 提示:
40+
#
41+
#
42+
# 1 <= nums.length <= 1000
43+
# 0 <= nums[i] <= 1000
44+
# nums 中的所有整数 互不相同
45+
#
46+
# Related Topics 栈 树 数组 分治 二叉树 单调栈
47+
# 👍 460 👎 0
48+
49+
50+
# leetcode submit region begin(Prohibit modification and deletion)
51+
# Definition for a binary tree node.
52+
# class TreeNode:
53+
# def __init__(self, val=0, left=None, right=None):
54+
# self.val = val
55+
# self.left = left
56+
# self.right = right
57+
classSolution:
58+
defconstructMaximumBinaryTree(self,nums:List[int])->TreeNode:
59+
defdfs(start,end):
60+
ifstart>end:
61+
returnNone
62+
ifstart==end:
63+
returnTreeNode(nums[start])
64+
maxval=max(nums[start:(end+1)])
65+
pos=nums.index(maxval)
66+
root=TreeNode(maxval)
67+
root.left=dfs(start,pos-1)
68+
root.right=dfs(pos+1,end)
69+
returnroot
70+
returndfs(0,len(nums)-1)
71+
# leetcode submit region end(Prohibit modification and deletion)

‎script/leetcode/editor/cn/doc/[110]平衡二叉树.py

Lines changed: 0 additions & 52 deletions
This file was deleted.

‎script/leetcode/editor/cn/doc/[173]二叉搜索树迭代器.py

Lines changed: 0 additions & 86 deletions
This file was deleted.

‎树总结.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2273,6 +2273,71 @@ Tips
22732273
2. 外层递归加入是否遍历当前节点的选择,可以遍历可以不遍历,每一步只判断当前节点是否符合要求,并向下一个节点进行递归
22742274

22752275

2276+
###437 路经总和III
2277+
2278+
给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。
2279+
2280+
路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
2281+
2282+
2283+
2284+
示例 1:
2285+
2286+
输入:root =[10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8
2287+
输出:3
2288+
解释:和等于 8 的路径有 3 条,如图所示。
2289+
2290+
示例 2:
2291+
2292+
输入:root =[5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
2293+
输出:3
2294+
2295+
2296+
2297+
提示:
2298+
2299+
二叉树的节点个数的范围是 [0,1000]
2300+
-109 <= Node.val <= 109
2301+
-1000 <= targetSum <= 1000
2302+
2303+
2304+
2305+
1. 两层递归
2306+
2307+
```python
2308+
# Definition for a binary tree node.
2309+
# class TreeNode:
2310+
# def __init__(self, val=0, left=None, right=None):
2311+
# self.val = val
2312+
# self.left = left
2313+
# self.right = right
2314+
classSolution:
2315+
defpathSum(self,root: TreeNode,targetSum:int) ->int:
2316+
ifnot root:
2317+
return0
2318+
defdfs(root,target):
2319+
ifnot root:
2320+
return0
2321+
if target==root.val:
2322+
mid=1
2323+
else:
2324+
mid=0
2325+
left= dfs(root.left, target-root.val)
2326+
right= dfs(root.right, target-root.val)
2327+
return mid+left+right
2328+
return dfs(root, targetSum)+self.pathSum(root.left, targetSum)+self.pathSum(root.right, targetSum)
2329+
2330+
```
2331+
2332+
2333+
2334+
Tips
2335+
2336+
1. 内层递归就是常规的路径求和,区别在于不再中间停止,只在中间记录等于target的路径进行累加
2337+
2. 外层递归加入是否遍历当前节点的选择,可以遍历可以不遍历,每一步只判断当前节点是否符合要求,并向下一个节点进行递归
2338+
2339+
2340+
22762341
###450. 删除二叉搜索树中的节点.md
22772342
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。
22782343

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp