Желательно, чтобы вы знали, как реализовать эти структуры данных, но вам не нужны эти знания, чтобы быть компетентным или даже эффективным программистом.
У вас должно быть высокое понимание (очевидно) того, что они делают, а также того, как они это делают. Этого должно быть достаточно.
Мне не нужно знать внутреннюю работу каждого инструмента, который я использую, чтобы иметь возможность эффективно его использовать. Мне просто нужно понять, что он делает, для чего он подходит, а для чего он не подходит.
Лучшие программисты будут знать такие структуры данных и все известные варианты наизнанку, но затем они также будут знать каждый маленький уголок своего языка / фреймворка. Они намного выше «компетентного» уровня.