1315. Sum of Nodes with Even-Valued Grandparent

LeetCode medium original: C# #csharp #leetcode #medium #recursion #tree #two-pointers
题目文本会按所选界面语言从俄语翻译;代码保持不变。

Given the root of a binary tree, return the sum of values of nodes with an even-valued grandparent. If there are no nodes with an even-valued grandparent, return 0.

A grandparent of a node is the parent of its parent if it exists.

示例:

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.

C# 解法

匹配/原始
public class Solution {
    private int Solve(TreeNode root, int parent, int gParent) {
        if (root == null) {
            return 0;
        }
        return Solve(root.left, root.val, parent) + Solve(root.right, root.val, parent) + (gParent % 2 == 0 ? root.val : 0);
    }
    public int SumEvenGrandparent(TreeNode root) {
        return Solve(root, -1, -1);
    }
}

C++ 解法

自动草稿,提交前请检查
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    private int Solve(TreeNode root, int parent, int gParent) {
        if (root == null) {
            return 0;
        }
        return Solve(root.left, root.val, parent) + Solve(root.right, root.val, parent) + (gParent % 2 == 0 ? root.val : 0);
    }
    public int SumEvenGrandparent(TreeNode root) {
        return Solve(root, -1, -1);
    }
}

Java 解法

匹配/原始
class Solution {
    int solve(TreeNode root, int parent, int gParent) {
        if (root == null) {
            return 0;
        }
        return solve(root.left, root.val, parent) + solve(root.right, root.val, parent) + (gParent % 2 != 0 ? 0 : root.val);
    }

    public int sumEvenGrandparent(TreeNode root) {
        return solve(root, -1, -1);
    }
}

Python 解法

匹配/原始
class Solution:
    def solve(self, root: TreeNode, parent: int, gParent: int) -> int:
        if not root:
            return 0
        return self.solve(root.left, root.val, parent) + self.solve(root.right, root.val, parent) + (root.val if gParent % 2 == 0 else 0)

    def sumEvenGrandparent(self, root: TreeNode) -> int:
        return self.solve(root, -1, -1)

Go 解法

匹配/原始
func solve(root *TreeNode, parent, gParent int) int {
    if root == nil {
        return 0
    }
    return solve(root.Left, root.Val, parent) + solve(root.Right, root.Val, parent) + func() int {
        if gParent%2 == 0 {
            return root.Val
        }
        return 0
    }()
}

func sumEvenGrandparent(root *TreeNode) int {
    return solve(root, -1, -1)
}

Algorithm

Определите метод solve(), который принимает TreeNode root, значение родителя parent и значение бабушки или дедушки gParent. Этот метод returns сумму значений узлов с четным значением бабушки и дедушки в поддереве узла root. Если root равен null, return 0 как сумму.

Рекурсивно пройдите по левому и правому дочерним узлам, передавая в качестве значения parent root, а в качестве значения gParent parent. Если значение gParent четное, добавьте значение root к ответу.

Вызовите рекурсивную функцию solve() с корневым узлом и значениями -1 для parent и gParent. return сумму для левого и правого дочерних узлов и значение для текущего узла.

😎

Vacancies for this task

活跃职位 with overlapping task tags are 已显示.

所有职位
目前还没有活跃职位。