当前位置:网站首页 > 技术博客 > 正文

二叉树排序树删除节点例子



首先先看看这个删除节点12后的树,还要保证该平衡二叉树的特性保持不变

删除节点详细分为三类:

第一类.所删除的节点是叶子节点,这样就可以先遍历这个树,然后找到需要删除的节点,把它free掉就好

第二类:就是所删除的节点只有一个左孩子,或者只有一个右孩子,则把该节点的孩子变为它父亲的孩子 ,然后删除这个结点

在这个例子把28删除,就是把30连接到12上

第三类:就是最麻烦的一类,假如我们要删除节点12,直接删除就会破坏了排序二叉树的结构,那么我们想到一个方法,就是把这类转换成第一类,那么重点来了,我们找到要删除的结点后,找到在这个节点左子树的最右的节点或者右子树的最左侧的节点,把这个节点的值覆盖到要删除的节点上,然后删除左子树的最右的节点或者右子树的最左侧的节点,

 我们看这个例子:要删除12 先找到以12位根的左子树的最右的节点 就是数字6 ,把6覆盖到节点·12,然后删除节点6

                           或者找到右子树的最左边的节点 就是该树上的28,把28覆盖到节点12上,再删除28,就变成了第二类删除

代码如下:核心函数Search 和 DelNode

 


  • 上一篇: json反序列化成对象
  • 下一篇: sql游标实例
  • 版权声明


    相关文章:

  • json反序列化成对象2025-01-01 11:30:03
  • 平滑处理设置多少最好2025-01-01 11:30:03
  • sota计算机视觉2025-01-01 11:30:03
  • 数据库设计概念2025-01-01 11:30:03
  • c++中成员函数可以调用成员函数吗2025-01-01 11:30:03
  • sql游标实例2025-01-01 11:30:03
  • redis集群状态2025-01-01 11:30:03
  • assertvalid函数2025-01-01 11:30:03
  • 武汉网络dns地址2025-01-01 11:30:03
  • 86五笔输入法手机版2025-01-01 11:30:03