首页 > 其他 > 详细

[LeetCode] 1315. Sum of Nodes with Even-Valued Grandparent

时间:2021-06-03 14:17:49      阅读:10      评论:0      收藏:0      [点我收藏+]

Given a binary tree, return the sum of values of nodes with even-valued grandparent.  (A grandparent of a node is the parent of its parent, if it exists.)

If there are no nodes with an even-valued grandparent, return 0.

Example 1:

技术分享图片

Input: root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]
Output: 18
Explanation: The red nodes are the nodes with even-value grandparent while the blue nodes are the even-value grandparents.

Constraints:

  • The number of nodes in the tree is between 1 and 10^4.
  • The value of nodes is between 1 and 100.

祖父节点值为偶数的节点和。

给你一棵二叉树,请你返回满足以下条件的所有节点的值之和:

该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。)
如果不存在祖父节点值为偶数的节点,那么返回 0 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sum-of-nodes-with-even-valued-grandparent
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

这道题看似挺复杂,其实我个人感觉考察的还是对于 DFS 和递归的理解。我这里给出一个 DFS/前序遍历 的思路。题目既然问的是如果 grandParent 节点值是偶数,才把当前节点的节点值累加到结果中,那么我们在用DFS做深度遍历的时候就一定要带上 parent 节点和 grandParent 节点的某些信息。这里只要带上了这两个节点的信息,才能在遍历到当前节点的时候决定要不要加入结果集。

时间O(n)

空间O(n)

Java实现

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode() {}
 8  *     TreeNode(int val) { this.val = val; }
 9  *     TreeNode(int val, TreeNode left, TreeNode right) {
10  *         this.val = val;
11  *         this.left = left;
12  *         this.right = right;
13  *     }
14  * }
15  */
16 class Solution {
17     int res = 0;
18 
19     public int sumEvenGrandparent(TreeNode root) {
20         dfs(root, null, null);
21         return res;
22     }
23 
24     private void dfs(TreeNode root, TreeNode parent, TreeNode grandParent) {
25         // base case
26         if (root == null) {
27             return;
28         }
29         if (grandParent != null && grandParent.val % 2 == 0) {
30             res += root.val;
31         }
32         dfs(root.left, root, parent);
33         dfs(root.right, root, parent);
34     }
35 }

 

LeetCode 题目总结

[LeetCode] 1315. Sum of Nodes with Even-Valued Grandparent

原文:https://www.cnblogs.com/cnoodle/p/14844744.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!