2023年6月22日发(作者:)
二叉树根节点到叶子结点的路径和的最小值
给定一棵二叉树,求从根节点到叶子结点路径上的节点值之和的最小值。
例如,对于下面这棵二叉树:
```
5
/
4 8
/ /
11 13 4
/ /
7 2 5 1
```
从根节点到叶子结点的路径和的最小值为22,即从根节点到左子树的叶子结点4,再到左子树的叶子结点11。
思路:
考虑使用深度优先搜索(DFS)遍历整棵树,同时记录当前路径的节点值之和。当遍历到一个叶子结点时,比较当前路径的节点值之和与最小值,更新最小值。
代码实现:
```python
class Solution:
- 1 - def minPathSum(self, root: TreeNode) -> int:
if not root:
return 0
_sum = float('inf')
(root, 0)
return _sum
def dfs(self, node, curr_sum):
if not and not : # 叶子结点
_sum = min(_sum, curr_sum + )
if :
(, curr_sum + )
if :
(, curr_sum + )
```
时间复杂度:O(n),其中n为二叉树的节点数。
空间复杂度:O(h),其中h为二叉树的高度,即递归栈的最大深度。
- 2 -
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687384515a6058.html
评论列表(0条)