【数据结构】二叉排序树的删除
2016-12-14 18:03
253 查看
【基础知识】
删除二叉树的节点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
【总结】
说白了就是把左子树最大的找出来放在根节点处,其他的节点正确调整。要么是把右子树最小的节点放在根节点处,其他酌情调整。
删除二叉树的节点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
【总结】
说白了就是把左子树最大的找出来放在根节点处,其他的节点正确调整。要么是把右子树最小的节点放在根节点处,其他酌情调整。
相关文章推荐
- 数据结构 二叉排序树 查入 搜索 删除
- 重温数据结构:二叉排序树的查找、插入、删除
- 数据结构 二叉排序树的创建,查找,插入,删除
- 重温数据结构:二叉排序树的查找、插入、删除
- 二叉排序树的删除操作 - 数据结构和算法75
- 严蔚敏数据结构中二叉排序树删除操作的问题(与链表比较)
- 数据结构 二叉排序树的创建、查找、删除
- 数据结构试验:二叉排序树
- 数据结构 — 4.删除单链表中所有值大于mink且小于maxk的元素
- 二叉排序树的查找(插入、删除)
- 【数据结构_树_Tree_1011】二叉排序树的实践和查找
- 平衡二叉树的C语言实现(创建、插入、查找、删除、旋转)【数据结构】
- 二叉查找树(二叉排序树)创建、插入、删除、查找-C语言
- c++实现数据结构链表的插入 删除 倒置 取值(vs测试可以运行)
- 数据结构C语言>3基本链表>3-5链表的结点删除
- 数据结构------二叉平衡树(二)删除操作
- 二叉排序树的删除
- 数据结构---二叉排序树
- 线性表的建立插入删除查找(浙大数据结构)
- 在一颗二叉排序树上删除节点