关键是找前驱后继的思想理解了就好
//! 查找某个结点的前驱或后继结点(要求结点要有parent指针)
//! 前驱结点定义:中序遍历中的前一个结点,而不是二叉树结构中的上一个母结点
Node *BinarySearchTreesZH::predecessor(Node *node)
{
if (node == nullptr)
{
return node;
}
//! 前驱结点是左子树中的最右结点
if (node->left != nullptr