Почему странно вызывать parent()
для объектов, которых нет в дереве? Вы можете сделать это и со второй версией, то есть вы можете вызвать parent(E)
на некоторых E
, которых нет в дереве.
В общем, я думаю, что раскрытие древовидной структуры имеет смысл, когда то, что вы предоставляете пользователям, является деревом. Если вы, например, создавали ассоциативный массив, используя дерево, вам даже не нужно показывать метод parent()
.
Другая причина первой может заключаться в том, что некоторые E
могут быть не уникальными в дереве. Так что, если в дереве дважды присутствует E
, каждый раз с другим родителем, неясно, что должно возвращать parent(E)
. parent(Position<E>)
не имеет этой проблемы.
И причина производительности тоже может быть значительной. Если разница между O(N)
и O(1)
, то это, безусловно, того стоит.