二叉树根节点到叶子结点的路径和的最小值

二叉树根节点到叶子结点的路径和的最小值

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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信