美文网首页
【算法打卡60天】Day20二叉树基础(下):有了如此高效的散列

【算法打卡60天】Day20二叉树基础(下):有了如此高效的散列

作者: 花生无翼 | 来源:发表于2020-04-21 21:29 被阅读0次

Day20

学习内容 : 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?(一)

二叉查找树和散列表一样,都支持动态数据集合的快速插入、删除、查找操作。

二叉查找树(Binary Search Tree)二叉查找树是二叉树中最常用的一种类型,也叫二叉搜索树。

二叉查找树要求,在树中的任意一个节点,其左子树中的每个节点的值,都要小于这个节点的值,而右子树节点的值都大于这个节点的值。

1.二叉查找树的查找操作

我们先取根节点,如果它等于我们要查找的数据,那就返回。如果要查找的数据比根节点的值小,那就在左子树中递归查找;如果要查找的数据比根节点的值大,那就在右子树中递归查找。

2.二叉查找树的插入操作

如果要插入的数据比节点的数据大,并且节点的右子树为空,就将新数据直接插到右子节点的位置;如果不为空,就再递归遍历右子树,查找插入位置。同理,如果要插入的数据比节点数值小,并且节点的左子树为空,就将新数据插入到左子节点的位置;如果不为空,就再递归遍历左子树,查找插入位置。

3.二叉查找树的删除操作

第一种情况是,如果要删除的节点没有子节点,我们只需要直接将父节点中,指向要删除节点的指针置为 null。

第三种情况是,如果要删除的节点有两个子节点,这就比较复杂了。我们需要找到这个节点的右子树中的最小节点,把它替换到要删除的节点上。然后再删除掉这个最小节点,因为最小节点肯定没有左子节点(如果有左子结点,那就不是最小节点了)。

4.二叉查找树的其他操作

除了插入、删除、查找操作之外,二叉查找树中还可以支持快速地查找最大节点和最小节点、前驱节点和后继节点。

重要的特性,就是中序遍历二叉查找树,可以输出有序的数据序列,时间复杂度是 O(n),非常高效。

5.二叉查找树的时间复杂度分析

时间复杂度其实都跟树的高度成正比,也就是 O(height)。

平衡二叉查找树的高度接近 logn,所以插入、删除、查找操作的时间复杂度也比较稳定,是 O(logn)。

*本文参考【极客时间】专栏[《数据结构与算法之美》](https://links.jianshu.com/go?to=http%3A%2F%2Fgk.link%2Fa%2F10clr)。*

相关文章

  • 【算法打卡60天】Day20二叉树基础(下):有了如此高效的散列

    Day20 学习内容 : 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?(一) 二叉查找树和散列表一...

  • 【算法打卡60天】Day21二叉树基础(下):有了如此高效的散列

    第21天学习内容 : 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?(二) 1.支持重复数据的二叉查...

  • HashMap深度分析疑问

    hashMap底层是基于散列算法实现,散列算法分为散列再探测和拉链式。hashmap使用了拉链式散列算法,在jdk...

  • 密码安全

    本文介绍密码安全相关的加密与散列算法。 目录 散列算法 加密算法对称加密非对称加密 散列算法 Hashing 是使...

  • 哈希算法

    一,概念 前面涉及到散列表,散列函数,散列算法。那么和哈希算法又是什么关系,其实散列函数对应的算法就是哈希算法。 ...

  • shiro散列算法密码加盐测试精讲篇

    散列算法 通常需要对密码 进行散列,常用的有md5、sha, 对md5密码,如果知道散列后的值可以通过穷举算法,得...

  • 如何成为一名数据科学家

    一、基础 1、矩阵和线性代数基础 2、散列函数、二叉树和O(n) 3、关系代数、DB基础 4、inner/oute...

  • shiro权限控制学习---编码/解码

    散列算法 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如MD...

  • Hash算法有哪些?

    Hash算法的有哪几种,优缺点,使用场景 Hash ,一般叫做散列算法,就是把任意长度的输入通过散列算法,变换成固...

  • Hash 算法

    散列算法(Hash Algorithm),又称哈希算法,杂凑算法,是从任意文件中创造小的数字[指纹]的方法。散列算...

网友评论

      本文标题:【算法打卡60天】Day20二叉树基础(下):有了如此高效的散列

      本文链接:https://www.haomeiwen.com/subject/ubemihtx.html