struct rtavl_node *s; da[k] = 0; pa[k++] = p; for (;;) { da[k] = 1; pa[k++] = r; s = r->rtavl_link[1]; if (s->rtavl_rtag == RTAVL_THREAD) break; r = s; } if (s->rtavl_link[0] != NULL) { struct rtavl_node *t = s->rtavl_link[0]; while (t->rtavl_rtag == RTAVL_CHILD) t = t->rtavl_link[1]; t->rtavl_link[1] = p; } p->rtavl_data = s->rtavl_data; if (s->rtavl_link[0] != NULL) r->rtavl_link[1] = s->rtavl_link[0]; else { r->rtavl_rtag = RTAVL_THREAD; r->rtavl_link[1] = p; } p = s;