Проверить правильность ввода двоичного дерева (используя union-find)
Учитывая несколько кортежей в форме (A,B), где A - родительский элемент, а B - дочерний элемент в двоичном дереве, найдите, допустим ли ввод или нет. Были предоставлены 4 условия ошибки:
- Если у родителя более 2 детей,
- Если введены повторяющиеся кортежи,
- Если у дерева есть цикл,
- Если возможно более одного рута.
При нарушении нескольких условий действия выведите условие, указанное первым в указанном порядке. Если введенные данные верны, выведите дерево в последовательном представлении. Например: если вход (A,B), (B, C), (A, D), (C, E), вывод: (A (B (C (E))) (D))
Я думаю о том, чтобы решить это через объединение данных, но не могу его кодировать. Может кто-нибудь помочь мне с логикой или псевдокодом в C / C++