Результаты поиска
Лучшая самобалансировка BST для быстрого ввода большого количества узлов
Я смог найти подробности о нескольких самобалансирующихся BST через несколько источников, но я не нашел хороших описаний, детализирующих, какой из них лучше всего использовать в разных ситуациях (или если это действительно не имеет значения).
Я хочу BST , который является оптимальным для хранения более десяти миллионов узлов. Порядок вставки узлов в основном случайный, и мне никогда не нужно будет удалять узлы, поэтому время вставки-это единственное, что нужно будет оптимизировать.
Я намерен использовать его для хранения ранее посещенных игровых состояний в игре-головоломке, чтобы я мог быстро проверить, была ли уже обнаружена предыдущая конфигурация.
Лучшая самобалансировка BST для быстрого ввода большого количества узлов
Я смог найти подробности о нескольких самобалансирующихся BST через несколько источников, но я не нашел хороших описаний, детализирующих, какой из них лучше всего использовать в разных ситуациях (или если это действительно не имеет значения).
Я хочу BST , который является оптимальным для хранения более десяти миллионов узлов. Порядок вставки узлов в основном случайный, и мне никогда не нужно будет удалять узлы, поэтому время вставки-это единственное, что нужно будет оптимизировать.
Я намерен использовать его для хранения ранее посещенных игровых состояний в игре-головоломке, чтобы я мог быстро проверить, была ли уже обнаружена предыдущая конфигурация.
Найти узел, щелкнутый в контекстном меню
Как узнать, в каком узле древовидного списка было активировано контекстное меню? Например, щелкните правой кнопкой мыши узел и выберите нужный пункт в меню.
Я не могу использовать свойство TreeViews' SelectedNode , потому что узел был только щелкнут правой кнопкой мыши и не выбран.
Оценка экспрессии и Хождение по деревьям с использованием полиморфизма? (Ала Стив Егге)
Сегодня утром я читал книгу Стива Йегге "когда полиморфизм терпит неудачу", когда наткнулся на вопрос, который его коллега обычно задавал потенциальным сотрудникам, когда они приходили на собеседование в Amazon.
Как пример полиморфизма в действие, давайте посмотрим на классику "eval" вопрос интервью, который (как насколько я знаю) был доведен до Amazon автор: Рон Браунштейн. Вопрос в том довольно богатый, как ему удается зондируйте большое разнообразие важных навыки: OOP дизайн, рекурсия, двоичный код деревья, полиморфизм и время выполнения набор текста, общие навыки кодирования и (если вы хотите сделать его еще более трудным) теория парсинга.
В какой-то момент кандидат с надеждой осознает, что вы можете представлять собой арифметическое выражение в двоичном виде дерево, предполагая, что вы только используете бинарные операторы, такие как" +", "-", "* " ,"/". Листовые узлы - это все числа, а внутренние узлы являются все операторы. Оценка состояния выражение означает ходить по дереву. Если кандидат этого не понимает, вы можете мягко привести их к этому, или если это необходимо, просто скажи им.
Даже если ты расскажешь им, это все равно будет неприятно. интересная проблема.
Первая половина вопроса, которая некоторые люди (чьи имена я буду называть защищать до последнего вздоха, но их инициалы-Вилли Льюис) feel is a Требования К Работе, Если Вы Хотите Позвонить Вы Сами Разработчик И Работаете На Amazon, на самом деле довольно сложно. То вопрос заключается в следующем: как вы идете от Ан арифметическое выражение (например, в a строку), такие как "2 + (2)" к дерево выражения. У нас может быть ADJ вызов по этому вопросу у некоторых точка.
Вторая половина такова: допустим, это проект из 2 человек и ваш партнер, кого мы будем называть "Willie", это ответственный за преобразование строковое выражение в дереве. Вы получаете самая простая часть: вам нужно решить, что именно классы Вилли должен построить дерево С. Вы можете сделать это в любом случае язык, но убедитесь, что вы выбираете один, или Вилли вручит тебе assembly язык. Если он чувствует себя раздраженным, то это будет для процессора то есть нет дольше производится в производстве.
Вы были бы поражены, узнав, сколько кандидатов БОФФ вот этот.
Я не буду давать вам ответ, но ... Стандартное плохое решение предполагает использование состояния переключателя или случая (или просто доброе старомодное каскадное "если"). Один Немного лучшее решение включает в себя использование таблицы указателей функций, и вероятно лучшее решение предполагает использование полиморфизма. Я рекомендуем вам работать через него иногда. Забавная штука!
Итак, давайте попробуем решить эту проблему всеми тремя способами. Как перейти от арифметического выражения (например, в строке), такого как "2 + (2)", к дереву выражений, используя каскадные if, таблицу указателей функций и / или полиморфизм?
Не стесняйтесь решать один, два или все три вопроса.
[update: заголовок изменен, чтобы лучше соответствовать тому, что было в большинстве ответов.]
Как получить доступ к Ruby AST из кода уровня C?
Я понимаю, что Ruby 1.8 AST проходит во время выполнения с использованием оператора big switch, и многие вещи, такие как вызов метода в классе или родительском модуле, включают интерпретатор, который смотрит вверх и вниз по дереву, когда он идет. Есть ли простой способ получить доступ к этому AST в Ruby C расширение? Связано ли это с расширением Ruby API или требует взлома внутренних структур данных напрямую?
Предотвратить запуск событий TreeView в VB6?
В некотором коде VB6 у меня есть обработчик для события коллапса TreeView:
Private Sub MyTree_Collapse(ByVal Node as MSComCtlLib.Node)
Это вызывается всякий раз, когда узел в дереве сворачивается, будь то пользователем или программно. Как оказалось, через некоторое Окольное выполнение может случиться так, что этот обработчик закончит тем, что скажет узлу свернуться, что приведет к бесконечной рекурсии.
Я могу придумать несколько способов освежевать эту кошку, но мне кажется, что проще всего сказать TreeView не вызывать события в течение некоторого периода времени. Я не могу найти простой звонок, чтобы позволить мне сделать это, хотя. Кто-нибудь успешно сделал это, или мне нужно отслеживать состояние каким-то другим способом, чтобы я мог реагировать соответствующим образом, когда появляются рекурсивные события?
Разбор полезного адреса улицы, города, штата, Zip из строки
Проблема: у меня есть поле адреса из базы данных Access, которая была преобразована в Sql Server 2005. В этом поле есть все, что находится в одном поле. Мне нужно разобрать отдельные разделы адреса на соответствующие поля в нормализованной таблице. Мне нужно сделать это примерно для 4000 записей, и это должно быть повторяемо.
Предубеждения:
Предположим, что адрес в US (на данный момент)
предположим, что входная строка иногда будет содержать адресата (лицо, к которому обращаются) и/или второй адрес улицы (например, номер B)
государства могут быть сокращены
Код zip может быть стандартным 5-значным или zip+4
в некоторых случаях есть опечатки
UPDATE: в ответ на поставленные вопросы, стандарты не были соблюдены повсеместно, мне нужно хранить индивидуальные значения, а не только геокод и ошибки означает опечатку (исправлено выше)
выборочные данные:
А. П. Кролл & Сын 2299 Льюис-Джорджтаун Hwy, Джорджтаун, DE 19947
11522 Шони-Роуд, Гринвуд DE 19950
144 Кингс-Хайвей, S.W. Дувр, DE 19901
Интегрированная Константа. Услуги 2 Penns Way Suite 405 New Castle, DE 19720
Humes Realty 33 Bridle Ridge Court, Льюис, DE 19958
Раскопки Николса 2742 Pulaski Hwy Newark, DE 19711
2284 Брин Сион Роуд, Смирна, DE 19904
VEI Dover Crossroads, LLC 1500 Serpentine Road, Suite 100 Baltimore MD 21
580 North Dupont Highway Dover, DE 19901
P.O. Вставка 778 Дувр, DE 19903
Как сделать дерево в C++?
Как сделать древовидную структуру данных в C++, которая использует итераторы вместо указателей? Я не смог найти ничего в STL, что могло бы сделать это. Что я хотел бы сделать, так это иметь возможность создавать и манипулировать деревьями, как это:
#include <iostream>
#include <tree>
using namespace std;
int main()
{
tree<int> myTree;
tree<int>::iterator i = myTree.root();
*i = 42;
tree<int>::iterator j = i.add_child();
*j = 777;
j = j.parent();
if (i == myTree.root() && i == j) cout << "i and j are both pointing to the root\n";
return 0;
}
Спасибо, tree.hh-это как раз то, что я искал.
Если это делается для получения выгоды от структура данных, содержащая произвольные типы индексов, оптимизированные для поиска и хорошо на вставке тогда считайте используя карту.
Карта-это ассоциативный контейнер, который имеет гарантии производительности идентичные к тем из дерева: логарифмические поиск, логарифмическая вставка, логарифмическое удаление, линейное пространство. Внутри страны они часто реализуются как красно-черные деревья, хотя это и так не гарантия. Тем не менее, как пользователь STL все, о чем вы должны заботиться, это гарантии производительности STL алгоритмы и структуры данных. Реализуются ли они в виде деревьев или маленькие зеленые человечки не должны иметь значения для тебя.
Я не уверен, что карта - это то, что мне нужно, но спасибо за информацию. Я буду помнить, чтобы использовать карты, когда это возможно, вместо реализации деревьев.
Красно-Черные Деревья
Я видел бинарные деревья и бинарный поиск, упомянутые в нескольких книгах, которые я читал в последнее время, но поскольку я все еще в начале моих исследований в области компьютерных наук, я еще не прошел курс, который действительно имел дело с алгоритмами и структурами данных серьезным образом.
Я проверил все типичные Источники (Википедия, Google), и большинство описаний полезности и реализации (в частности) красно-черных деревьев оказались настолько плотными и трудными для понимания. Я уверен, что для кого-то с необходимым фоном это имеет идеальный смысл, но в данный момент он читается почти как иностранный язык.
Итак, что же делает бинарные деревья полезными в некоторых общих задачах, которые вы делаете во время программирования? Кроме того, какие деревья вы предпочитаете использовать (пожалуйста, включите пример реализации) и почему?
Что такое "best" способ хранения международных адресов в базе данных?
Каков "лучший" способ хранения международных адресов в базе данных? Ответьте в виде схемы и объясните причины, по которым вы решили нормализовать (или нет) свой путь. Также объясните, почему вы выбрали тип и длину каждого поля.
Примечание: Вы сами решаете, какие поля вы считаете необходимыми.
449   6   16:35, 22nd August, 2020