Я сейчас пишу компилятор для Java.JLS говорит: «Иерархия классов должна быть ациклической».но как насчет случая, когда:
B extends A
C extends A
D extends B
D extends C
Это ациклический граф, но недействительный, как я могу обнаружить этот случай?В настоящее время я использую BFS, и всякий раз, когда я вижу крайний край, я знаю, что есть цикл, но алгоритм BFS не обнаруживает вышеупомянутый случай.