1315. 祖父节点值为偶数的节点和
题目描述
解题思路
1、层次遍历、深度优先均可,比正常这些方法多一点是需要记录父节点和祖父节点
代码实现
class Solution:
def sumEvenGrandparent1(self, root: TreeNode) -> int:
# 层次遍历法,记录一下父节点和祖父节点
if not root:
return 0
queue = [(root, None, None)]
res = 0
while queue:
size = len(queue)
for _ in range(size):
node, parent, grad = queue.pop(0)
if grad and grad.val % 2 == 0:
res += node.val
if node.left:
queue.append((node.left, node, parent))
if node.right:
queue.append((node.right, node, parent))
return res
def sumEvenGrandparent(self, root: TreeNode) -> int:
# 深度优先遍历法
self.res = 0
def pre_order(root, parent, grad):
if not root:
return
if grad and grad.val % 2 == 0:
self.res += root.val
pre_order(root.left, root, parent)
pre_order(root.right, root, parent)
def post_order(root, parent, grad):
if not root:
return
post_order(root.left, root, parent)
post_order(root.right, root, parent)
if grad and grad.val % 2 == 0:
self.res += root.val
post_order(root, None, None)
return self.res