void show_trie(struct node* node, int pos) { static int g[6]; if (!node) { } else if (node->last) { printf("%02d %08d %04d %04d %04d %0d4 %d\n", g[0], g[1], g[2], g[3], g[4], g[5], node->last); } else { int old = g[pos]; show_trie(node->left, pos); g[pos] = node->ch; show_trie(node->mid, pos+1); g[pos] = old; show_trie(node->right, pos); } }
void solve() { int n = read_int(); int i = 0; char s[100]; int g[7]; node_ptr = NODES; root = NULL; while (n-- > 0) { read_account(g); root = insert(root, g); } show_trie(root, 0); }
void show_trie(struct SOTrie *so, int depth) { int i; const char *stoke[5] = { "一", "丨", "丿", "丶", "乙" }; if (so == NULL) return; for (i = 0; i < 5; ++i) { if (so -> snext[i]) { int k; for (k = 0; k < depth; ++k) putchar(' '); printf("%s: ", stoke[i]); int j; if (so -> snext[i] -> sdata) { for (j = 0; j < so -> snext[i] -> sdata -> count; ++j) { putgbkchr(so -> snext[i] -> sdata -> data[j]); putchar(' '); } } else printf("[NULL]"); printf("\n"); } else continue; show_trie(so -> snext[i], depth + 4); } }