Так что у меня только что было интервью, которое, я уверен, я испортил по-королевски. Меня бросили в кучу вопросов, и у меня не было достаточно времени, чтобы ответить на последний.
После того, как все начальные вопросы были правильными, меня попросили написать функцию, которая бы определяла, содержится ли двоичное дерево b в другом двоичном дереве a. До этого я правильно закодировал вопрос, в котором он попросил меня написать функцию, чтобы определить, равны ли два дерева:
int sameTree(struct node *a, struct node *b){
//both empty = TRUE
if(a == NULL && b == NULL)
return TRUE;
//both not empty, compare them
else if(a != NULL && b != NULL){
return(
a->data == b->data &&
sameTree(a->left, b->left) &&
sameTree(a->right, b->right)
);
}
//one empty, one not = FALSE
else
return FALSE;
}
Тьфу. Просто для того, чтобы очистить мою совесть, опять же, как бы вы определили, находится ли дерево b внутри дерева a?
Спасибо за любую помощь, ребята.