diff --git a/include/tr/tree_macros.h b/include/tr/tree_macros.h index bbe77f2..99062d6 100644 --- a/include/tr/tree_macros.h +++ b/include/tr/tree_macros.h @@ -263,14 +263,16 @@ typedef enum {rbBlack=1, rbRed=2} TR_rbColor; TR_TREE_ROTATE(left, (root), (node)->parent->parent); \ } -#define TR_TREE_BALANCE_INSERT(root, node) \ - while (1) { \ - TR_TREE_BALANCE_INSERT_CASE1((node)) \ - TR_TREE_BALANCE_INSERT_CASE2((node)) \ - TR_TREE_BALANCE_INSERT_CASE3((node)) \ - TR_TREE_BALANCE_INSERT_CASE4((root), (node)) \ - TR_TREE_BALANCE_INSERT_CASE5((root), (node)) \ - break; \ +#define TR_TREE_BALANCE_INSERT(root, node) \ + while (1) { \ + TR_TREE_BALANCE_INSERT_CASE1((node)) \ + TR_TREE_BALANCE_INSERT_CASE2((node)) \ + if (NULL != (node)->parent->parent) { \ + TR_TREE_BALANCE_INSERT_CASE3((node)) \ + TR_TREE_BALANCE_INSERT_CASE4((root), (node)) \ + TR_TREE_BALANCE_INSERT_CASE5((root), (node)) \ + } \ + break; \ } #endif // __TR_TREE_MACROS_H__