Ваш вопрос слишком недооценен ... то есть даже в вашем примере неясно, почему ответ не включает engine->an->oil
.
Кроме того, на самом деле он не имеет ничего общегос деревьями, скорее он имеет дело с графами.
Первое, что вам нужно сделать, это определить, как построить свой граф.Разумным способом сделать это было бы иметь грань между двумя словами, если они оба появляются в определенном предложении.
Тогда вам нужно решить, что вы хотите вывести.Я очень сомневаюсь, что вы хотите все пути.Зачем?Что ж, если вы построите график, который я описал, то даже используя только ваше первое предложение, есть 24 пути от двигателя до масла, не считая пути с циклами.Однако, если это то, что вам нужно в любом случае, вы можете найти все нециклические пути в графе с помощью поиска в глубину, где вы отмечаете посещенный узел, когда помещаете его в стек, и снимаете отметку, когда вынимаете его.