1 class Solution: 2 def __init__(self): 3 self.result = 0 4 5 def preOrder(self,root): 6 if root != None: 7 if root.val % 2 == 0: 8 self.levelOrder(root) 9 if root.left != None: 10 self.preOrder(root.left) 11 if root.right != None: 12 self.preOrder(root.right) 13 14 def levelOrder(self,root): 15 if root.left != None: 16 if root.left.left != None: 17 self.result += root.left.left.val 18 if root.left.right != None: 19 self.result += root.left.right.val 20 21 if root.right != None: 22 if root.right.left != None: 23 self.result += root.right.left.val 24 if root.right.right != None: 25 self.result += root.right.right.val 26 27 def sumEvenGrandparent(self, root: 'TreeNode') -> int: 28 self.preOrder(root) 29 return self.result
算法思路:二叉树遍历。
先按照某种顺序遍历二叉树,本代码使用的是先序遍历。
对于每一个当前节点,如果是偶数,则求其孙子节点的和,累加到全局变量中。