AvlNode
AvlNode *avl_lookup_node(const struct stree *avl, const struct sm_state *sm)
AvlNode *node = NULL;
static AvlNode *mkNode(const struct sm_state *sm)
AvlNode *node = malloc(sizeof(*node));
static void freeNode(AvlNode *node)
static AvlNode *lookup(const struct stree *avl, AvlNode *node, const struct sm_state *sm)
static bool insert_sm(struct stree *avl, AvlNode **p, const struct sm_state *sm)
AvlNode *node = *p;
static bool remove_sm(struct stree *avl, AvlNode **p, const struct sm_state *sm, AvlNode **ret)
AvlNode *node = *p;
AvlNode *replacement;
static AvlNode *mkNode(const struct sm_state *sm);
static void freeNode(AvlNode *node);
static bool removeExtremum(AvlNode **p, int side, AvlNode **ret)
AvlNode *node = *p;
static AvlNode *lookup(const struct stree *avl, AvlNode *node, const struct sm_state *sm);
static int sway(AvlNode **p, int sway)
static bool insert_sm(struct stree *avl, AvlNode **p, const struct sm_state *sm);
static bool remove_sm(struct stree *avl, AvlNode **p, const struct sm_state *sm, AvlNode **ret);
static void balance(AvlNode **p, int side)
AvlNode *node = *p,
static bool removeExtremum(AvlNode **p, int side, AvlNode **ret);
AvlNode *grandchild = child->lr[opposite];
static int sway(AvlNode **p, int sway);
static void balance(AvlNode **p, int side);
static bool checkBalances(AvlNode *node, int *height)
static bool checkBalances(AvlNode *node, int *height);
static size_t countNode(AvlNode *node);
static size_t countNode(AvlNode *node)
AvlNode *node;
AvlNode *node = iter->node;
AvlNode *found;
AvlNode *node;
AvlNode *stack[100];
AvlNode *lr[2];
AvlNode *avl_lookup_node(const struct stree *avl, const struct sm_state *sm);
typedef struct AvlNode AvlNode;
AvlNode *root;