struct TrieNode * root = getNode(); struct TrieNode * sub_root = getNode(); struct TrieNode * rule_0 = getNode(); insert(sub_root, "1", 0, rule_0); insert(rule_0, "2", 1, rule_1); struct TrieNode * rule_2 = getNode(); insert(rule_1, "3", 2, rule_2); struct TrieNode * rule_3 = getNode(); insert(rule_2, "5", 3, rule_3); insert(rule_0, "2", 1, rule_4); struct TrieNode * rule_5 = getNode(); insert(rule_4, "8", 2, rule_5); struct TrieNode * rule_3 = getNode(); insert(rule_5, "5", 3, rule_3); insert(rule_3, "6", 2, NULL); struct TrieNode * rule_6 = getNode(); insert(sub_root, "1", 0, rule_6); struct TrieNode * rule_7 = getNode(); insert(rule_6, "2", 1, rule_7); struct TrieNode * rule_8 = getNode(); insert(rule_7, "4", 2, rule_8); struct TrieNode * rule_9 = getNode(); insert(rule_8, "5", 3, rule_9); insert(rule_9, "6", 4, NULL); struct TrieNode * rule_10 = getNode(); insert(sub_root, "1", 0, rule_10); struct TrieNode * rule_11 = getNode(); insert(rule_10, "2", 1, rule_11); struct TrieNode * rule_12 = getNode(); insert(rule_11, "4", 2, rule_12); struct TrieNode * rule_13 = getNode(); insert(rule_12, "5", 3, rule_13); insert(rule_13, "7", 4, NULL);