80 lines
1.3 KiB
Markdown
80 lines
1.3 KiB
Markdown
---
|
|
layout: page
|
|
title: Deepest Leaves Sum (DFS)
|
|
last_solved: 2020-07-17
|
|
category: trees
|
|
leetcode_url: https://leetcode.com/problems/deepest-leaves-sum/
|
|
status: Solved
|
|
---
|
|
|
|
```
|
|
Given a binary tree, return the sum of values of its deepest leaves.
|
|
```
|
|
|
|
|
|
{% highlight python %}
|
|
|
|
class TreeNode:
|
|
|
|
def __init__(self, val):
|
|
|
|
self.val = val
|
|
self.left = None
|
|
self.right = None
|
|
|
|
|
|
def deepestLeavesSum(root):
|
|
|
|
map = {}
|
|
|
|
def dfs(root, depth):
|
|
|
|
map[depth] = root.val + map.get(depth, 0)
|
|
|
|
if root.left:
|
|
dfs(root.left, depth+1)
|
|
if root.right:
|
|
dfs(root.right, depth+1)
|
|
|
|
|
|
dfs(root, 0)
|
|
return map[max(map)]
|
|
|
|
root = TreeNode(1)
|
|
root.left = TreeNode(2)
|
|
root.right = TreeNode(3)
|
|
root.left.left = TreeNode(4)
|
|
root.left.right = TreeNode(5)
|
|
|
|
print deepestLeavesSum(root)
|
|
|
|
{% endhighlight %}
|
|
|
|
_______________
|
|
|
|
|
|
{% highlight python %}
|
|
|
|
def deepestLeavesSum(self, root: TreeNode) -> int:
|
|
|
|
lookup = defaultdict(int)
|
|
|
|
def dfs(node, level):
|
|
|
|
if not node:
|
|
return
|
|
|
|
lookup[level] = lookup[level]+node.val
|
|
|
|
dfs(node.left, level+1)
|
|
dfs(node.right, level+1)
|
|
|
|
dfs(root, 0)
|
|
|
|
print(lookup)
|
|
|
|
return lookup[max(lookup)]
|
|
|
|
{% endhighlight %}
|
|
|
|
![image1]() |