加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜新站长网 (https://www.0418zz.com.cn/)- 管理运维、AI硬件、数据集成、云备份、负载均衡!
当前位置: 首页 > 站长资讯 > 动态 > 正文

心里有点树不?

发布时间:2021-03-27 13:16:50 所属栏目:动态 来源:互联网
导读:虽然没有植过树,但是学到过很多树的结构,比如二叉树、B+ 树,红黑树。每次面试必问,恰逢植树节,本来是想讲解 B 树,但发现必须要理解了二叉树之后才能更好地讲解 B 树,所以先给大家讲下二叉树是什么,后面文章再更新 B 树。 大白话讲解二叉树 比如现在

虽然没有植过树,但是学到过很多树的结构,比如二叉树、B+ 树,红黑树。每次面试必问,恰逢植树节,本来是想讲解 B 树,但发现必须要理解了二叉树之后才能更好地讲解 B 树,所以先给大家讲下二叉树是什么,后面文章再更新 B 树。

大白话讲解二叉树

比如现在有个数组,存放了很多用户的名字,需要从这个数组中找到包含指定的用户名,最快的方式是什么?

我们会想到二分查找,虽然这种方式很快,但要达到最快还需要有个条件:数组有序。

如果我们能把插入用户名的时候直接给他排序,那最后的结构就是有序结构。

因此有人设计了一种数据结构:二叉查找树,也叫做二叉树。

如下图所示:这是一种二叉树结构。有四个术语需要说明:节点、左节点、右节点、根节点。

其中每个红色圆球都算一个节点,节点左下边相连接的节点叫做左节点,而右边相连的叫做右节点。比如 Alice 被称作 Herry 节点的左节点,Mike 被称作 Herry 的右节点。而根节点只会有一个,属于最上面的节点,上图中的 Herry 就是根节点。

对于其中每个节点,左子节点的值都比它小,而右子节点的值都比它大。比如 Alice < Herry < Mike。

假设现在我们想要查找 Ivy,首先检查根节点,发现比 Herry 大,所以往下继续找,找到了根节点的右节点 Mike,再继续找,比 Mike 小,所以找 Mike 的左节点,正好找到 Ivy。

二叉查找树中查找节点时,平均运行时间是 O(logn),最糟糕的情况下所需时间为 O(n); 而在有序数组中查找时,及时最糟糕的情况,二分查找最多也是 O(logn),所以你可能会觉得,二分查找比二叉查找要快很多。但是二叉查找树的插入和删除操作的速度是要快很多的。这里我们做一个对比:

(编辑:阜新站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读