ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

LeetCode - Medium - 1315. Sum of Nodes with Even-Valued Grandparent

2021-06-21 13:01:07  阅读:187  来源: 互联网

标签:Even 1315 Medium val right nodes null root left


Topic

  • Tree
  • Depth-first Search

Description

https://leetcode.com/problems/sum-of-nodes-with-even-valued-grandparent/

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 1 0 4 10^4 104.
  • The value of nodes is between 1 and 100.

Analysis

方法一:自己写的,DFS。

方法二:别人写的,DFS,更精简。

Submission

import com.lun.util.BinaryTree.TreeNode;

public class SumOfNodesWithEvenValuedGrandparent {
	
	//方法一:自己写的,DFS
    public int sumEvenGrandparent(TreeNode root) {
    	if(root == null) return 0;
    	int result = 0;
    	if((root.val & 1) == 0) {
    		TreeNode left = root.left;
    		if(left != null) {
    			if(left.left != null)
    				result += left.left.val;
    			if(left.right != null)
    				result += left.right.val;
    		}
    		
    		TreeNode right = root.right;
    		if(right != null) {
    			if(right.left != null)
    				result += right.left.val;
    			if(right.right != null)
    				result += right.right.val;
    		}
    	}
    	return result + sumEvenGrandparent(root.left) + sumEvenGrandparent(root.right);
    }
    
    
    //方法二:别人写的,DFS
    public int sumEvenGrandparent2(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);
    }
    
}

Test

import static org.junit.Assert.*;
import org.junit.Test;

import com.lun.util.BinaryTree;

public class SumOfNodesWithEvenValuedGrandparentTest {

    @Test
    public void test() {
        SumOfNodesWithEvenValuedGrandparent sObj = new SumOfNodesWithEvenValuedGrandparent();

        assertEquals(18, sObj.sumEvenGrandparent( //
        		BinaryTree.integers2BinaryTree(6,7,8,2,7,1,3,9,null,1,4,null,null,null,5)));
        assertEquals(18, sObj.sumEvenGrandparent2( //
        		BinaryTree.integers2BinaryTree(6,7,8,2,7,1,3,9,null,1,4,null,null,null,5)));
    }
}

标签:Even,1315,Medium,val,right,nodes,null,root,left
来源: https://blog.csdn.net/u011863024/article/details/118084216

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有