#include struct n { int v; struct n *l, *r; }; void i(struct n **n, int v) { if (*n) i((*n)->v < v ? &(*n)->r : &(*n)->l, v); else { *n = malloc(sizeof **n); **n = (struct n) { .v = v }; } }