def insert(self, ip_segment, group):
bits = self.ip_to_bits(ip_segment)
if bit not in node.children:
node.children[bit] = TrieNode()
node = node.children[bit]
def search(self, ip_address):
bits = self.ip_to_bits(ip_address)
if bit in node.children:
node = node.children[bit]
def ip_to_bits(self, ip):
# Convert IP segment or address to binary string
ip, prefix_length = ip.split('/')
prefix_length = int(prefix_length)
binary_ip = ''.join(f'{int(octet):08b}' for octet in ip.split('.'))
return binary_ip[:prefix_length]
trie.insert('192.168.1.0/24', '组A')
trie.insert('192.168.2.0/24', '组B')
trie.insert('192.168.3.0/24', '组C')
ip_address = '192.168.2.25/24'
group = trie.search(ip_address)
print(f'IP地址 {ip_address} 属于 {group}')