Next larger
Given a BST and a value, find the first key that is larger than given value.
Solution
- Do a BST traverse, and keep track of the larger elements along the way
- BST property ensures we always update the next_larger element as we traverse down to the given value
Code
def next_larger(node, value)
return nil if node.nil?
nl = 0
while node do
if node.value > key
nl = node.value
node = node.left
else
node = node.right
end
end
return nl
end
Complexity
- Time: Proportional to the height of the tree, O(log n)