Learn Code
Depth-First Search
Greedy Algorithms
Depth-First Search
Calculate Tilt
easy
DESCRIPTION (credit Leetcode.com)
Given the root node of a binary tree, write a recursive function to return the sum of each node's tilt.
The tilt of a node is the absolute difference between the sum of its left subtree and the sum of its right subtree. If a node has an empty left or subtree, the sum of the empty subtree is 0.
Example 1:
Input:
Output:
The leaf nodes 1, 3 have tilts of 0 (their left and right subtrees are empty)
The root node 5 has a tilt of |1 - 3| = 2
Example 2:
Input:
Output:
The leaf nodes 1, 3, 6, 9 have tilts of 0 (their left and right subtrees are empty)
Node 2 has a tilt of |1 - 3| = 2
Node 7 has a tilt of |6 - 9| = 3
Node 4 has a tilt of |6 - 22] = 16
2 + 3 + 16 = 21
Explanation
- The sum of the values in the left subtree.
- The sum of the values in the right subtree.
# get the sum of current node's left and right subtreesleft = dfs(node.left)right = dfs(node.right)# calculate tilt of current subtree and add it to the global tilt variabletilt += abs(left - right)# return the sum of the current subtreereturn left + right + node.val
Solution
class Solution:def findTilt(self, root: TreeNode) -> int:tilt = 0# define a helper function to perform the recursive calls# this ensures that the tilt variable is not accessible outside of the main functiondef dfs(node):nonlocal tilt# base caseif not node:return 0# get the sum of the current node's left and right subtreesleft = dfs(node.left)right = dfs(node.right)# calculate tilt of current subtree, and add it to the global tilt variabletilt += abs(left - right)# return the sum of the current subtreereturn left + right + node.val# initiate the call to the helper functiondfs(root)return tilt
Test Your Knowledge
Login to take the complexity quiz and track your progress
Complexity Analysis
Time Complexity: O(N) where N
is the number of nodes in the tree. We visit each node exactly once, and at each node, we perform constant time work.
Space Complexity: O(N) where N
is the number of nodes. A total of N
call frames have to be allocated, one for each node in the tree.
Login to track your progress
Your account is free and you can post anonymously if you choose.