【基础知识】
删除二叉树的节点P,共有两种方式:
方法一:1.若P有左子树,找到其左子树的最右边的叶子结点R,用该叶子结点R来替代P,把R的左孩子作为R的父亲的右孩子。
2.若P没有左子树,直接用P的右孩子取代它。
方法二:
1.若P有左子树,用P的左孩子取代它;找到其左子树的最右边的叶子结点R,把P的右子树作为R的右子树。
2.若P没有左子树,直接用P的右孩子取代它。
【问题实例】
删除二叉排序树的节点:原二叉排序树, 依次删除10、6、7。
图1
原二叉排序树如图1.
删除10后,结果如下图2
图2
删除6后结果如下图3
图3
删除7后有两种结果,根据方式一,则为图4
图4
根据方式二,则为图5
图5
【总结】
说白了就是把左子树最大的找出来放在根节点处,其他的节点正确调整。要么是把右子树最小的节点放在根节点处,其他酌情调整。