二叉搜索树(Binary Search Tree),又称为“二叉排序树”、“二叉查找树”。定义为:该树的每个结点都有一个作为搜索依据的关键码。对任意结点而言,其左子树(如果存在)上的每个结点的关键码均小于该结点的关键码,其右子树(如果存在)上的所有结点的关键码都大于该结点的关键码。
其中,根据二叉搜索树的定义,二叉树结点之间的关系可以通过结点间的位置关系来得到,常用的算法是分割式查找,查找结点的平均长度;
插入操作时,新插入的结点总是叶子结点,首先查找插入结点的父亲结点,再判断左右子树;
删除操作时,由于结点位置的不同,使得删除结点操作比较复杂,有多种情况需要考虑,主要包含三种:删除叶子结点、删除只有一个孩子的结点、删除左右孩子都有的结点,其中删除左右孩子都有的结点时,使用合并操作,查找被删除结点p的左子树中最右值最大的结点r,将结点r的右子树指向结点p的右子树的根,然后用结点p的左子树的根代替被删除的结点p,最后删除结点p。
例如: