From 71e0ce2243c4d330c656d20b325d114a04bba631 Mon Sep 17 00:00:00 2001 From: Heng Li Date: Sat, 14 Apr 2018 21:51:26 -0400 Subject: [PATCH] added a simpler tree deallocator --- kavl.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/kavl.h b/kavl.h index a1c40f3..6e9102c 100644 --- a/kavl.h +++ b/kavl.h @@ -251,6 +251,20 @@ int main(void) { return p; \ } +#define kavl_free(__type, __head, __root, __free) do { \ + __type *_p, *_q; \ + for (_p = __root; _p; _p = _q) { \ + if (_p->__head.p[0] == 0) { \ + _q = _p->__head.p[1]; \ + __free(_p); \ + } else { \ + _q = _p->__head.p[0]; \ + _p->__head.p[0] = _q->__head.p[1]; \ + _q->__head.p[1] = _p; \ + } \ + } \ + } while (0) + #define __KAVL_ITR(suf, __scope, __type, __head, __cmp) \ struct kavl_itr_##suf { \ const __type *stack[KAVL_MAX_DEPTH], **top, *right; /* _right_ points to the right child of *top */ \ -- 2.47.3