You only have free questions left (including this one).
But it doesn't have to end here! Sign up for the 7-day coding interview crash course and you'll get a free Interview Cake problem every week.
You're in!
Write a method to find the 2nd largest element in a binary search tree.
Here's a sample binary tree node class:
public class BinaryTreeNode
{
public int Value { get; }
public BinaryTreeNode Left { get; private set; }
public BinaryTreeNode Right { get; private set; }
public BinaryTreeNode(int value)
{
Value = value;
}
public BinaryTreeNode InsertLeft(int leftValue)
{
Left = new BinaryTreeNode(leftValue);
return Left;
}
public BinaryTreeNode InsertRight(int rightValue)
{
Right = new BinaryTreeNode(rightValue);
return Right;
}
}
Our first thought might be to do an in-order traversal of the BST and return the second-to-last item. This means looking at every node in the BST. That would take time and space, where h is the max height of the tree (which is lg(n) if the tree is balanced, but could be as much as n if not).
We can do better than time and space.
We can do this in one walk from top to bottom of our BST. This means time (again, that's if the tree is balanced, otherwise).
A clean recursive implementation will take space in the call stack, but we can bring our algorithm down to space overall.
Start your free trial!
Log in or sign up with one click to get immediate access to free mock interview questions