[
tree
dfs
bfs
recursion
]
Leetcode 1038. Binary Search Tree to Greater Sum Tree
Problem statement
https://leetcode.com/problems/binary-search-tree-to-greater-sum-tree/
Solution
The idea is to traverse our tree, starting from the bigger elements, that is first we go to the right, then update self.total is sum of all values which are > root.val, make root.val equal to self.total and then traverse the right subtree.
Complexity
It is O(n) for time and O(h) for space.
Code
class Solution:
def __init__(self):
self.total = 0
def bstToGst(self, root):
if not root: return
self.bstToGst(root.right)
self.total += root.val
root.val = self.total
self.bstToGst(root.left)
return root