avltreen_newnode.c (393B)
1 /* ISC license. */ 2 3 #include <skalibs/genset.h> 4 #include <skalibs/avlnode.h> 5 #include <skalibs/avltreen.h> 6 7 uint32_t avltreen_newnode (avltreen *t, uint32_t d) 8 { 9 uint32_t i = genset_new(&t->x) ; 10 if (i < avltreen_totalsize(t)) 11 { 12 avlnode *s = avltreen_nodes(t) ; 13 s[i].data = d ; 14 s[i].child[0] = s[i].child[1] = avltreen_totalsize(t) ; 15 s[i].balance = 0 ; 16 } 17 return i ; 18 }