I absolutely love tree problems!
It had been a while since I had seen a fresh tree problem on Leetcode. This is a Medium one, but fairly straightforward - a direct implementation of a post-order depth-first-search traversal. Code is down below, cheers, ACC.
Count Nodes Equal to Sum of Descendants - LeetCode
1973. Count Nodes Equal to Sum of Descendants
Medium
Given the root
of a binary tree, return the number of nodes where the value of the node is equal to the sum of the values of its descendants.
A descendant of a node x
is any node that is on the path from node x
to some leaf node. The sum is considered to be 0
if the node has no descendants.
Example 1:
Input: root = [10,3,4,2,1] Output: 2 Explanation: For the node with value 10: The sum of its descendants is 3+4+2+1 = 10. For the node with value 3: The sum of its descendants is 2+1 = 3.
Example 2:
Input: root = [2,3,null,2,null] Output: 0 Explanation: No node has a value that is equal to the sum of its descendants.
Example 3:
Input: root = [0] Output: 1 For the node with value 0: The sum of its descendants is 0 since it has no descendants.
Constraints:
- The number of nodes in the tree is in the range
[1, 105]
. 0 <= Node.val <= 105
public int EqualToDescendants(TreeNode root) { int sumDescendants = 0; int retVal = 0; EqualToDescendants(root, ref sumDescendants, ref retVal); return retVal; } private void EqualToDescendants(TreeNode currentNode, ref int sumDescendants, ref int retVal) { if (currentNode == null) { sumDescendants = 0; return; } int sumDescendantsLeft = 0; EqualToDescendants(currentNode.left, ref sumDescendantsLeft, ref retVal); int sumDescendantsRight = 0; EqualToDescendants(currentNode.right, ref sumDescendantsRight, ref retVal); if (currentNode.val == sumDescendantsLeft + sumDescendantsRight) { retVal++; } sumDescendants = currentNode.val + sumDescendantsLeft + sumDescendantsRight; }
Comments
Post a Comment