viktorleg: для начала объясните, хранится ли в первом случае пароль в открытом виде, либо хранится его хэш? какой алгоритм построения хэша с солью во втором случае?
Артур: собственно, вот здесь всё расписано: https://habrahabr.ru/post/112222/
В подпункте "Построение двоичной кучи" описаны два способа построения, проверил их - получил как раз оба ваших результата.
Артур: да, результат может быть неоднозначным, главное, чтобы выполнялось требование двоичной кучи - любой элемент должен быть не меньше его потомков.
В примере с 3, 10, 11 - нужно в любом случае топить в сторону 11.
Добавил вручную на листке бумаги эти 12 элементов - получилось такое же дерево, как у вас во втором примере. При добавлении вершин в пустое дерево, добавляя их в конец и производя всплытие вверх - результат будет однозначным. Но если вы уже построили другое бинарное дерево и пытаетесь превратить его в кучу - тут уже зависит от того, какой именно алгоритм для этой цели используется (в каком порядке он сравнивает, топит или всплывает элементы), и какое именно бинарное дерево вы изначально построили, потому что одни и те же элементы можно превратить в двоичную кучу различными способами.
11 3 10 и 11 10 3 - это обе двоичные кучи и обе правильные.
Артур: потому что у вас есть одинаковые элементы в куче. Попробуйте с различными элементами. А для одинаковых (если нужно топить вершину, а оба потомка одинаковы) - можно как влево сдвинуть, так и вправо, от этого куча не перестанет быть двоичной кучей, но внутри её распределение может быть различно из-за этого. Это ни на что не влияет.
Shrt: socket.io использует несколько транспортов: там, где доступен вебсокет, он использует вебсокет, а если он недоступен или режется прокси-сервером, то использует обыкновенный AJAX.
Valeriu Vodnicear: нельзя получить то, что браузер не передаёт на сервер. И вряд ли через javascript можно вытянуть эти данные, иначе это была бы жуткая дырень в безопасности.