Бинарное дерево поиска построено немного странно. Видимо, вы знаете ранг команд заранее. В этом случае вы обычно сохраняете ранг с командой в Node
. Тогда вы можете легко получить звание позже. Таким образом, вы также не обязаны добавлять команды в порядке их рангов.
Ваш текущий метод getRank()
в настоящее время фактически не получает ранг. Обратите внимание, что если вы добавите команды в порядке их ранга сейчас, вы получите очень боковое дерево с поддеревом, всегда с правой стороны, с левой стороной всегда null
. Также вероятно, что ваши ошибки возникли: getRank()
всегда будет возвращать 1.
Вы не должны разрабатывать два различных сайта, но Вы, вероятно, хотите к тому, если важно позволить мобильным пользователям получить доступ к Вашему сайту.
Существует несколько способов иметь дело с этой проблемой, каждым с за и против. Я предполагаю, что Ваш сайт имеет свою информацию в базе данных и публикует те данные с помощью ряда шаблонов? (Как Ruby on Rails или сайт Django; сайт PHP; блог; и т.д.) При руке набора статических страниц HTML это будет путем, более трудоемким для Вас.
1: Тот же HTML, различные таблицы стилей для ЭКРАНА и МОБИЛЬНЫЙ
Идея: Вы поставляете ту же структуру HTML всем запросам. Вы создаете таблицу стилей для ЭКРАНА и один для МОБИЛЬНОГО.
Хороший: Для Вас, программиста. Для Вас легче поддержать 2 таблицы стилей, чем это должно поддерживать 2 полностью отдельных шаблонных сайта.
Плохо: Для Ваших пользователей. Сайт это просто в использовании на мобильном устройстве обычно, неэффективен для нормального браузера; и сайты, оптимизированные для рабочего стола / ноутбук часто, терпят полный провал на мобильном устройстве. Очевидно, это зависит от того, как Вы кодируете свои страницы, но в большинстве случаев, продвижение Вашего нормального сайта к мобильному браузеру будет плохо для Ваших пользователей. (См. http://www.useit.com/alertbox/mobile-usability.html для сводки недавнего исследования удобства использования Jakob Nielsen в области мобильных сайтов.)
2: Поддерживайте отдельные сайты
(Gmail обслуживает даже больше чем 2 системы! У них в основном есть различные приложения-контейнеры / шаблоны, которые обрабатывают те же данные: полная версия браузера Ajax; плоскость версия браузера HTML; основная мобильная версия; собственное приложение Blackberry; и собственное приложение для iPhone.)
Это - появляющийся стандарт для сайтов, которые действительно заботятся о наличии и о мобильном и настольном присутствии. Это - больше работы для Вас, но в целом это намного лучше для Ваших пользователей.
На позитивном аспекте можно, вероятно, создать тот, разделенный вниз чистый сайт HTML, который работает на мобильный телефон, и это действует как нейтрализация для редкого интернет-пользователя, у которого нет JavaScript, или у кого есть главные проблемы доступности, которые препятствуют тому, чтобы они использовали "весь" сайт.
Кроме того, в зависимости от Вашей базы пользователей: в США люди обычно имеют доступ к рабочему столу / ноутбук и используют их мобильные устройства для вспомогательного доступа. Например, я заказываю свои авиабилеты и прокатный автомобиль с помощью моего настольного компьютера, но я хочу искать свой код резервирования моего мобильного телефона. Во многих случаях можно сойти с рук ограничение функциональности, которую Вы предлагаете на мобильном сайте и требуете, чтобы полный компьютер выполнил редкие варианты использования.
Основная процедура:
Можно хотеть следовать за Quirksmode для его появляющихся статей о мобильном тестировании.
3: Шаблоны производят различные блоки данных в зависимости от агента пользователя и поддерживают отдельные таблицы стилей
Как (2), это требует, чтобы Вы осуществили сниффинг агента пользователя. В отличие от этого (2), Вы все еще используете весь одинаковый логика страницы и не должны поддерживать два отдельных сайта. Это могло бы быть хорошо, если Вы просто имеете дело с блогом или веб-сайтом, это главным образом о чтении данных.
В Вашем коде шаблона можно сказать вещи как
if( $useragentType != mobile ) {
echo( 'bigBlockOfRelatedArticlesAndAds.php' );
}
Это позволяет Вам главным образом поддержать один набор шаблонных файлов. Можно также оптимизировать страницы, которые Вы отправляете своим мобильным пользователям, таким образом, они не получают большую чрезмерно увеличенную в размерах страницу, когда они просто хотели считать Ваше сообщение в блоге или что бы то ни было.
Большинство мобильных устройств в эти дни поддерживает "мобильные таблицы стилей", которые являются просто альтернативными таблицами стилей для отображения более простых вещей. Можно добавить мобильную таблицу стилей к сайту нормальным способом и включать media="handheld"
атрибут:
<link rel="stylesheet" type="text/css" href="/mobile.css" media="handheld" />
Затем те стили будут относиться к мобильным телефонам.
Единственная проблема с этим методом состоит в том, если Ваш HTML является большим, это может требовать времени для страницы для загрузки, так как наиболее мобильные браузеры медленнее (кроме Opera Mini). Вот почему большие сайты как flickr и digg используют отдельные сайты.
Дополнительные примечания:
media
атрибуты. IIRC добавление кода выше заставит браузеры проигнорировать первую таблицу стилей. Если Вы добавляете media="all"
к первому оба будут использоваться (и можно таким образом переопределить первоначальные стили, а не начать заново).Проверьте проект WURFL. Его намерение состоит в том, чтобы помочь разработчикам быть нацеленными на несколько телефонных браузеров и запустило путь назад, прежде чем был Мобильный Safari, назад в эпоху HDML, WAP и XHTML-MP. Это актуально однако, храня возможности современных устройств, такие как iPhone. Это имеет данные по более чем 400 устройствам и имеет библиотеки в Java, PHP, Perl, Ruby, Python.NET, C++. В зависимости от того, как широко Вы хотите быть нацеленными на свое мобильное приложение, это - что-то для взгляда на. Вот является список сайтов тем использованием WURFL.
Другим связанным проектом, записанным Luca Passani (соучредитель и специалист по обслуживанию WURFL), является Переключатель. Можно использовать это для автоматического перенаправления к мобильной версии сайта.
Сохраните это простым, думайте Opera Mini, и Вы разберетесь в нем. (iPhone имеет больше от нормального браузера...),
Внимание на содержание
Избегайте плагинов
Следуйте за веб-стандартами
Отдельное содержание от расположения/дизайна, используйте CSS как можно больше.
Используйте текст и изображения.
Добавьте остальную часть дополнительных свойств, если Вы должны, но удостоверяться, site:s содержание всегда доступно, даже когда дополнительные свойства выключены. Если можно просмотреть страницу с простым браузером как рысь и нормальным браузером как Firefox затем, Вы на правильном пути.
Поскольку больше информации не стесняется посещать любую кампанию браузера
Править: В случае, если не очевидно, что Вы работаете с другой CSS для различных типов браузеров, но всегда используете то же содержание. Посетите сад дзэн CSS для хорошей демонстрации.
Обновление: Добавление ссылки к типам среды CSS, и, как указано другими, это - карманная опция, которая интересна.
Для проверки, как weppage смотрит в мобильном браузере, используют Эмулятор Opera Mini
Необходимо ли разработать два differents сайта, чтобы сделать это?
Да
Как я могу знать, получает ли к сайту доступ мобильный браузер?
Ваш язык программирования имеет, вероятно, некоторый способ просмотреть информацию клиента. PHP, например, имеет суперглобальную переменную $_SERVER
это имеет все виды информации и служащего сервера и клиента посещения. В этом случае Вы интересовались бы значением $_SERVER['HTTP_USER_AGENT']
, который дал бы следующий результат, должен я посещать страницу:
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16
Это говорит Вам, что я запускаю Mac OS X 10.5.6, с помощью Safari 4.0. Существуют известные ключевые слова для различных мобильных браузеров. Одна версия браузера iPhone, например, имеет следующий агент пользователя:
Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3
"iPhone" уже отдает его, но далее подтвержден "Мобильными" ключевыми словами и "Safari"
Большинство сайтов имеет немного отличающийся sub домен для мобильных сайтов (большая часть использования "m"). например, flickr использует m.flickr.com
(существует рекомендация использовать .mobi TLD, но я никогда не видел используемый),
Сделайте дизайн супер простым, не используйте слишком много графики, где необходимо сохранить их как можно меньше. Это могло бы быть полезно для дизайна.
Я, вероятно, создал бы другой набор страниц для мобильных пользователей, использовав те же бизнес-объекты и т.д., как Вы используете для основного сайта.
Если различия между дизайном этих двух достопримечательностей не к великому, Вы смогли получать путь только с обслуживанием отдельных файлов CSS?
Ваш сайт должен ограничивать мобильный телефон, который может поддерживать максимальные требования. Вы даже не можете развлекать все мобильный телефон .
Ваш веб-сайт должен иметь разные набор стилей CSS, а HTTP-агент должен проверить тип клиента в соответствии с выбором CSS CSS должен иметь место.