📅  最后修改于: 2023-12-03 14:48:46.230000             🧑  作者: Mango
本题需要我们求出一棵二叉树中所有带有偶祖父母的孩子节点的总和。首先,我们可以将整个树进行遍历,判断每一个孩子节点的祖父节点是否为偶数。若是,累加该节点的值,最后得到所有带有偶祖父母的孩子节点的总和。
采用递归遍历整个树,并记录每个节点的父节点和祖父节点,判断祖父节点是否为偶数。
def sum_even_grandparent(root) -> int:
def dfs(node, parent, grandparent):
if not node:
return 0
if grandparent and grandparent.val % 2 == 0:
return node.val + dfs(node.left, node, parent) + dfs(node.right, node, parent)
else:
return dfs(node.left, node, parent) + dfs(node.right, node, parent)
return dfs(root, None, None)
def sum_even_grandparent(root) -> int:
def dfs(node, parent, grandparent):
if not node:
return 0
if grandparent and grandparent.val % 2 == 0:
return node.val + dfs(node.left, node, parent) + dfs(node.right, node, parent)
else:
return dfs(node.left, node, parent) + dfs(node.right, node, parent)
return dfs(root, None, None)
该程序可以在 LeetCode 上 AC,时间复杂度为 O(n),空间复杂度为 O(n)。