You only have free questions left (including this one) .
Write a function to find the 2nd largest element in a binary search tree.
Here's a sample binary tree implementation :
typedef struct BinaryTreeNode {
void *value;
struct BinaryTreeNode *left;
struct BinaryTreeNode *right;
} BinaryTreeNode;
BinaryTreeNode * binaryTreeNodeNew(const void *value, size_t valueSize)
{
BinaryTreeNode *node;
node = malloc(sizeof(BinaryTreeNode));
assert(node != NULL);
node->value = malloc(valueSize);
assert(node->value != NULL);
memcpy(node->value, value, valueSize);
node->left = NULL;
node->right = NULL;
return node;
}
BinaryTreeNode * binaryTreeNodeInsertLeft(BinaryTreeNode *treeRoot, const void *value, size_t valueSize)
{
treeRoot->left = binaryTreeNodeNew(value, valueSize);
return treeRoot->left;
}
BinaryTreeNode * binaryTreeNodeInsertRight(BinaryTreeNode *treeRoot, const void *value, size_t valueSize)
{
treeRoot->right = binaryTreeNodeNew(value, valueSize);
return treeRoot->right;
}
void binaryTreeNodeFree(BinaryTreeNode *treeRoot)
{
if (treeRoot != NULL) {
binaryTreeNodeFree(treeRoot->left);
binaryTreeNodeFree(treeRoot->right);
free(treeRoot->value);
free(treeRoot);
}
}
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
We'll never post on your wall or message your friends.
Where do I enter my password?
Actually, we don't support password-based login. Never have. Just the OAuth methods above. Why?
It's easy and quick. No "reset password" flow. No password to forget.
It lets us avoid storing passwords that hackers could access and use to try to log into our users' email or bank accounts.
It makes it harder for one person to share a paid Interview Cake account with multiple people.
Start your free trial!
Log in or sign up with one click to get immediate access to free mock interview questions
We'll never post on your wall or message your friends.
Where do I enter my password?
Actually, we don't support password-based login. Never have. Just the OAuth methods above. Why?
It's easy and quick. No "reset password" flow. No password to forget.
It lets us avoid storing passwords that hackers could access and use to try to log into our users' email or bank accounts.
It makes it harder for one person to share a paid Interview Cake account with multiple people.
We're doing one walk down our BST, which means time, where h is the height of the tree (again, that's if the tree is balanced, otherwise). space.
Start your free trial!
Log in or sign up with one click to get immediate access to free mock interview questions
We'll never post on your wall or message your friends.
Where do I enter my password?
Actually, we don't support password-based login. Never have. Just the OAuth methods above. Why?
It's easy and quick. No "reset password" flow. No password to forget.
It lets us avoid storing passwords that hackers could access and use to try to log into our users' email or bank accounts.
It makes it harder for one person to share a paid Interview Cake account with multiple people.
Editor
Reset editor
vim/emacs?
regular
vim
emacs
Run
{"id":36028169,"username":"2024-10-30_00:00:39_#@jqmt","email":null,"date_joined":"2024-10-30T00:00:39.378530+00:00","first_name":"","last_name":"","full_name":"","short_name":"friend","is_anonymous":true,"is_on_last_question":false,"percent_done":0,"num_questions_done":0,"num_questions_remaining":46,"is_full_access":false,"is_student":false,"first_payment_date":null,"last_payment_date":null,"num_free_questions_left":3,"terms_has_agreed_to_latest":false,"preferred_content_language":"swift","preferred_editor_language":"","is_staff":false,"auth_providers_human_readable_list":"","num_auth_providers":0,"auth_email":""}
×
“ I was so used to thinking that I just don't have the knack for solving interview questions but you helped me 'get it.' I owe you one, man!
—
Noam
. . .