zoukankan      html  css  js  c++  java
  • 二叉查找树的删除

    二叉查找树的删除分为两种方式:

    二叉查找树,本质上是一棵排序树,具体不解释了。对于二叉树的删除操作。有两种方式:合并删除和排序删除:

    合并删除:

    图1  原始二叉树

    合并删除的本质在于:假如我们要删除结点A,那么,对于其左右子树B,C应该怎么办呢?

    方法是:找到A的左子树中最大值结点(这里是E),实质上是找到左子树中最右边的节点。然后将A节点的右子树合并到E的下面,删除A即可。即如下图:

    图2  合并删除

    可以看到,合并的实质是将A的右子树合并到左子树上!!!。而且可以看出,合并删除导致树的高度发生变化,极其容易导致树结构的不平衡(树的平衡性对树而言是很重要的特性)。

    再看复制删除:

    复制删除:

    复制删除的本质在于复制!!!假如我们要删除A,本质上,我们只是想让具有某个值的节点不存在,我们换一种思路,我们不删除这个结点,而是让这个节点被覆盖(被复制)。那么被谁覆盖呢?被A的左子树中最大值结点(这里是E),这一点和合并删除是相同的。复制删除结点如下:

    图3  复制删除

    复制删除表面上,没有改变树的深度,所以讲对于树的删除是更优的。

     

  • 相关阅读:
    【Daily Scrum】12-03:Sprint 3 Planning
    【Daily Scrum】12-02:Postmortem of sprint 2
    Team Project: 基于windows phone 8平台的PhotoStoryTelling 软件 ——by Qing
    【Daily Scrum】12-26
    【Daily Scrum】12-25
    【Daily Scrum】12-23
    【Daily Scrum】12-22
    【Daily Scrum】12-18
    【Daily Scrum】12-15
    列几点一些软件或APP的Bug和对其建议
  • 原文地址:https://www.cnblogs.com/shaonianpi/p/10466593.html
Copyright © 2011-2022 走看看