0001 template <typename T> BNP<T> eov(BNP<T> x) { //End Of the Vine 0002 if (x) //从x出发 0003 for ( ; x->lc; x = x->lc); //顺藤下行 0004 return x; //直至终点 0005 } //eov 0006 template <typename T> BNP<T> lla(BNP<T> x) { //Lowest Left Ancestor 0007 while (x->parent && x == x->parent->rc) //右父亲的...右父亲的 0008 x = x->parent; //右父亲的 0009 return x->parent; //左父亲(可能是nullptr) 0010 } //lla 0011 template <typename T> BNP<T> BinNode<T>::succ() //中序后继 0012 { return rc ? eov(rc) : lla(this); } //若有右孩子,则是右子树中藤之终点;否则是最低左祖先