(Java)leetcode-1315 Sum of Nodes with Even-Valued Grandparent(祖父節點值爲偶數的節點和)

題目描述

給你一棵二叉樹,請你返回滿足以下條件的所有節點的值之和:

該節點的祖父節點的值爲偶數。(一個節點的祖父節點是指該節點的父節點的父節點。)
如果不存在祖父節點值爲偶數的節點,那麼返回 0 。

在這裏插入圖片描述

思路

當我們在遍歷至某個節點時,若我們可以知道此節點的祖父節點是誰,那麼此題就可迎刃而解。
怎麼知道呢?在往下遞歸時把父節點(的值)p,與祖父節點(的值)gp 傳入即可。
傳兩個值的原因是,p 是爲了作爲下層的 gp傳入, gp是用於判斷當前層的祖父節點。

以上面的例子圖來說,我們先假設根節點有父節點1與祖父節點1(爲了不把根節點統計進去所以假設了兩個奇數),那麼遍歷至根節點的左孩子7時,傳入父(6)與祖父(1),接着遍歷至7的左孩子2時,傳入父(7)與祖父(6),此時就能感知到2的祖父爲6了。

代碼

class Solution {
  public int sumEvenGrandparent(TreeNode root) {
        return helper(root, 1, 1);
    }

    public int helper(TreeNode node, int p, int gp) {
        if (node == null) return 0;
        return helper(node.left, node.val, p) + helper(node.right, node.val, p) + (gp % 2 == 0 ? node.val : 0);
    }
}

Runtime: 1 ms, faster than 98.77% of Java online submissions for Sum of Nodes with Even-Valued Grandparent.

Memory Usage: 41.7 MB, less than 43.77% of Java online submissions for Sum of Nodes with Even-Valued Grandparent.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章