[LeetCode][Python] 1315. Sum of Nodes with Even-Valued Grandparent
Online Judge/LeetCode | 2020. 11. 11. 00:26
- 문제 링크: https://leetcode.com/problems/sum-of-nodes-with-even-valued-grandparent/
주어진 트리에서 값이 짝수인(even-valued) 노드의 손주(grandchildren) 노드들의 값의 합을 구하는 문제입니다. 난이도는 medium이네요.
일단 트리이기 때문에 이 손주 노드들을 두번 체크하는 일은 없기 때문에 이 부분은 별로 생각을 안해도 됩니다.
그 다음에는 dfs 또는 bfs로 모든 노드를 방문해서 그 노드 값이 짝수인 경우 손주 노드들의 값을 더하면 됩니다.
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def sumEvenGrandparent(self, root):
"""
:type root: TreeNode
:rtype: int
"""
return self.dfs(root)
def dfs(self, root):
if not root:
return 0
ret = 0
if root.val % 2 == 0:
if root.left:
if root.left.left:
ret += root.left.left.val
if root.left.right:
ret += root.left.right.val
if root.right:
if root.right.left:
ret += root.right.left.val
if root.right.right:
ret += root.right.right.val
# l, r
if root.left:
ret += self.dfs(root.left)
if root.right:
ret += self.dfs(root.right)
return ret
손주 노드들의 값은 어떻게 구하느냐.. 여러가지 방법이 있겠죠. 제일 쉬운건 위 방법입니다.
더 모던하게 하려면 저 부분을 함수로 빼거나, 아니면 모든 노드 방문하는건 똑같은데 dfs 함수 인자에 grandparent를 갖게 해서 현재 노드의 grandparent 노드의 값이 짝수면 합으로 더하고, 아님 말고 뭐 그런식으로 해도 됩니다
반응형
'Online Judge > LeetCode' 카테고리의 다른 글
[LeetCode][Python] 1530. Number of Good Leaf Nodes Pairs (0) | 2020.12.08 |
---|---|
[LeetCode][Python] 797. All Paths From Source to Target (0) | 2020.12.08 |
[LeetCode][Python] 111. Minimum Depth of Binary Tree (0) | 2020.11.11 |
[LeetCode][Python] 700. Search in a Binary Search Tree (0) | 2020.10.31 |
[LeetCode][Python] 7. Reverse Integer (0) | 2020.10.31 |