删除操作首先查找要删除的结点,看是否在二叉排序树中,若不在则不做任何操作;否则,假设要删除的结点为p,结点p的双亲结点为f,并假设结点p是结点f的左孩子(右孩子的情况类似)。下面分三种情况讨论:
1、若p为叶子结点,则可直接将其删除;
2、若p结点只有左子树或只有右子树,直接改为其双亲结点f的左子树;
3、若p既有左子树,又有右子树,此时有以下两种处理方法:
方法一:首先找到p结点在中序序列中的直接前驱s结点,然后将p的左子树,而将p的右子树改为s的右子树;
方法二:首先找到p结点在中序序列中的直接前驱s结点,然后用s结点的值替代p结点的值,再将s结点删除,原s结点的左子树改为s的双亲结点q的右子树;
二叉排序树的删除
最新推荐文章于 2023-12-24 23:09:45 发布