二叉树 & 二叉查找树

本文介绍了二叉树的三种类型:完全二叉树、满二叉树和完全二叉树,并详细讲解了二叉查找树的特性,包括空间复杂度和操作时间复杂度。特别地,重点阐述了二叉查找树中删除节点的策略,分为删除无子节点、一个子节点和两个子节点的节点的情况,并给出了具体的示例解析。
摘要由CSDN通过智能技术生成

二叉树 ( Binary Tree ) :  一种树型结构,每个节点最多拥有两个节点。( 如下图 )



几种类型的二叉树

       1. full binary tree: 每个节点的孩子数 是 0 或者 2. 对高度没有要求。 如下图

           

       2. perfect binary tree: 这个就是最完美的树,顾名思义,所有叶子节点都有相同的深度,并且除了叶子节点剩下的所有节点都有两个孩子节点。

       3. complete binary tree: 除了最后的那一层,其他层必须被填满,并且对于最后一层必须从最左开始填满。

       

 二叉查找树:

  1. 所有的字数都必须满足, 左节点的值小于根节点,根节点小于右节点. 

  2. 空间复杂度为O(n)

  3. 搜索/插入/删除 的时间复杂度: 最优 O(log n) 最差 O (n)

        为什么是log? 因为当比较的时候,我们能通过每次的比较过滤掉一半的树结构。

 

对于二叉查找树:

  查询/插入都很浅显易懂。

对麻烦的是删除节点。


二叉查找树的删除节点:

  1. 删除一个没有子节点的节点 -  直接移除该节点

  2. 删除一个有一个子节点的节点 - 直接移除该节点,并且将它的子节点置换到被删除的节点的位置上

  3. 删除一个有两个子节点的节点 - 定义 将要被删除的节点为N, 定义 另一个节点 为 R, R节点 是 来自 该树 in-order 序列的N节点之前的那一个节点。然后将R的值赋值给N, 

     如果R不满足 以上的条件1 或者 2那么,将R作为N, 进行递归.

比如: in-oder 序列 1, 3, 4, 6, 7, 8, 10, 13, 14.   我们想要删除10, 那么10 为N, R为8. 


例子: 在以上的树结构中,删除节点 10.

    1. 根据 in-order 找到R为8, N为10, 将N的值赋值为 8。

    2. 因为此时的R不满足1 或者 2 条件,所以继续。

    3.  将 R 变成N, 并找到新的R 7. 

    4. 7 满足条件 1 或者 2。 

    5. 结束。

 



有问题欢迎指出


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值