标签: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
and100
.
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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。