📅  最后修改于: 2023-12-03 14:49:01.175000             🧑  作者: Mango
在一棵二叉树中,每个节点都有一个整数值。我们定义「父子差异」为每个父节点与其子节点之间的差值的绝对值。找到二叉树中所有父子差异的总和。
例如,给定以下二叉树:
8
/ \
3 10
/ \ \
1 6 14
/ \ /
4 7 13
这棵二叉树中所有父子差异的总和为:
|8-3| + |8-10| + |3-1| + |3-6| + |10-14| + |1-4| + |1-7| + |14-13| = 44
这道题可以通过递归的方式来解决。对于一棵二叉树,我们需要计算每个父节点与其子节点的差异,并将所有的差异值累加求和。
我们可以定义一个递归函数,传入当前节点和其父节点的值。首先判断当前节点是否为空,如果是,则返回0。否则,我们计算当前节点与其父节点值的差异绝对值,并递归计算其左右子树的父子差异总和。
def parentChildDifferenceSum(root, parentVal):
if root is None:
return 0
diff = abs(root.val - parentVal)
leftSum = parentChildDifferenceSum(root.left, root.val)
rightSum = parentChildDifferenceSum(root.right, root.val)
return diff + leftSum + rightSum