0001 /****************************************************************************************** 0002 * BinNode状态与性质的判断 0003 ******************************************************************************************/ 0004 #define IsLChild(x) ( ((x)->parent) && ((x) == (x)->parent->lc) ) 0005 #define IsLeaf(x) ( (!(x)->lc) && (!(x)->rc) ) 0006 0007 /****************************************************************************************** 0008 * 与BinNode具有特定关系的节点及指针 0009 ******************************************************************************************/ 0010 #define sibling( p ) ( ((p) == (p)->parent->lc) ? (p)->parent->rc : (p)->parent->lc ) /*兄弟*/ 0011 #define uncle( x ) ( sibling( (x)->parent ) ) /*叔叔*/ 0012 #define FromParentTo( x ) /*来自父亲的引用*/ \ 0013 ( (x)->parent ? ( ((x) == (x)->parent->lc) ? (x)->parent->lc : (x)->parent->rc ) : _root )