Простой ответ - , чтобы ваши биты соответствовали вашему дереву .Сделайте ваше дерево как можно более густым (на самом деле коротким).
более подробный ответ:
Поскольку они имеют одинаковую длину, их порядок не должен иметь значения Позволяет звонить 0.0.0.0/255.255.0.255 A0.0.0.0/255.255.255.0 B входящий 0.0.111.0
октет 1 2 3 4, так что у нас есть правильный порядок
И я собираюсь делать их по октетам, потому что я ленивый.Чтобы создать самое густое дерево, вам нужно проверить октет 3 или 4, так как ваш первый тест 3, являющийся младшим, будет иметь произвольный приоритет.
Так что это смотрит на значение и проверяет правую ветвь.Правая ветвь является другим узлом, она проверяет октет один и перемещается вниз по левой ветви к следующему узлу, который проверяет октет 2, это проверяет левый (октет 4) и получает -1 (через NULL), правый иполучает -1 (через NULL), поэтому возвращает A (мы назовем его перечислимым типом).
Таким образом, порядок октетов становится 3 1 2 4.
Как правило, вы хотите заказатьбит проверяет, чтобы ранние уровни делали какую-то проверку.В этом случае мы нажимаем 4 до конца, потому что если три попадания (были нулем), проверка октета 4 является пустой тратой и не требует выполнения.Но 1 и 2 должны быть выполнены независимо от результата первой проверки.
при более крупной проблеме будут некоторые узлы, которые не имеют проверки, отправляя их в одинаковые левую и правую ветви независимо от значениячасть содержится.
Плохо построенное действительное дерево может принять порядок 3 4 1 2, поэтому, если первая проверка проходит (0 вместо 111), вторая проверка является пустой тратой, потому что мы уже принадлежим к группе B, независимо от того,значение октета 4.
Удачи.