rows: каждая строка [id, parent] содержит номер узла и номер его родителя (у корня parent = -1). Номера узлов различны, и строки вместе действительно образуют двоичное дерево — у каждого узла не больше двух детей.
Какой ребёнок левый, а какой правый, не сказано. Проверьте, можно ли так расставить детей, чтобы порядок строк в rows совпал с прямым обходом дерева: сначала узел, затем целиком его левое поддерево, затем целиком правое.
Верните True, если можно, и False иначе.rows=[[7, -1], [3, 7], [5, 3], [1, 7]] → True
Корень 7, у него дети 3 и 1, у 3 — ребёнок 5. Обход 7 → 3 → 5 → 1 — прямой: сначала поддерево 3 целиком, потом 1.
rows=[[7, -1], [3, 7], [1, 7], [5, 3]] → False
После 3 встретился 1, хотя поддерево 3 (узел 5) ещё не пройдено. Ни при каком выборе левого и правого ребёнка такой порядок не получится.
rows=[[4, -1]] → True
len(rows) ≤ 10⁵rows[i] = [id, parent], 0 ≤ id ≤ 10⁵, -1 ≤ parent ≤ 10⁵rows=[[7, -1], [3, 7], [5, 3], [1, 7]]
True
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 72 теста на сервере, включая скрытые.