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

算法思路:二叉树遍历。

先按照某种顺序遍历二叉树,本代码使用的是先序遍历。

对于每一个当前节点,如果是偶数,则求其孙子节点的和,累加到全局变量中。

posted on 2020-01-11 23:59  Sempron2800+  阅读(211)  评论(0编辑  收藏  举报