最全天气炎热,给大佬们找几棵树乘凉——数据结构树_天气热找棵树(2),2024年最新2024大数据开发开发面试题及答案

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取


今天天气很热,我找了几棵树给大家乘凉希望大佬们在暑假过的愉快啊

二叉树

满足以下两个条件的树就是二叉树:

  • 本身是有序树(若将树中每个结点的各子树看成是从左到右有次序的(即不能互换),则称该树为有序树(Ordered Tree))。
  • 树中包含的各个节点的度不能超过 2,即只能是 0、1 或者 2。
    简单地理解,二叉树(Binary tree)是每个节点最多只有两个分支(即不存在分支度大于 2 的节点)的树结构。通常分支被称作“左子树”或“右子树”。
    在这里插入图片描述

二叉查找树

要了解红黑树之前,免不了先看下二叉查找树是什么。

维基百科上的定义:二叉查找树(英语:Binary Search Tree),也称为二叉搜索树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树。

若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于或等于它的根节点的值;任意节点的左、右子树也分别为二叉查找树。

图示理解:

在这里插入图片描述

上图为查找值为29的节点,有以下步骤:

查看根节点 41。
因为 41>29,所以查看 41 的左孩子 20。
因为 20<29,所以查看 20 的右孩子 29,发现其正好是要查看的节点。
退化
二叉查找树有个非常严重的问题,如果数据的插入是从大到小插入的,或者是从小到大插入的话,会导致二叉查找树退化成单链表的形式,俗称瘸子。

左瘸子 例如,插入数据依次为 {5,4,3,2,1}(从大到小),则如下图所示:

在这里插入图片描述

右瘸子 例如,插入数据依次为{1,2,3,4,5}(从小到大),则如下图所示:

在这里插入图片描述

为了解决该问题,出现了一些解决方法,即平衡,能够使得树趋向平衡,这种自平衡的树叫做平衡树。

平衡树

平衡树(Balance Tree,BT)指的是,任意节点的子树的高度差都小于等于 1。

常见的符合平衡树的有 AVL 树(二叉平衡搜索树),B 树(多路平衡搜索树,2-3 树,2-3-4 树中的一种),红黑树等。

AVL 树

AVL 树(由发明者 Adelson-Velsky 和 Landis 的首字母缩写命名),是指任意节点的两个子树的高度差不超过 1 的平衡树。又称自平衡二叉搜索树。

AVL 树能解决上文二叉查找树中的右瘸子问题,例如,插入数据依次为 {1,2,3,4,5}(从小到大),则如下图所示:

在这里插入图片描述

AVL 树会对不符合高度差的结构进行调整,从而使得二叉树趋向平衡

2-3 树

2-3 树,是指每个具有子节点的节点(内部节点,internal node)要么有两个子节点和一个数据元素,要么有三个子节点和两个数据元素的自平衡的树,它的所有叶子节点都具有相同的高度。

简单点讲,2-3 树的非叶子节点都具有两个分叉或者三个分叉,所以,称作 2 叉-3 叉树更容易理解。

另外一种说法,具有两个子节点和一个数据元素的节点又称作 2 节点,具有三个子节点和两个数据元素的节点又称作 3 节点,所以,整颗树叫做 2-3 树。

图片

所有叶子点都在树的同一层,一样高:

性质 1:满足二叉搜索树的性质。
性质 2:节点可以存放一个或两个元素。
性质 3:每个节点有两个或三个子节点。

创建 2-3 树的规则

插入操作如下:

向 2-节点中插入元素:

图片

向一颗只含有一个 3-节点的树中插入元素:

图片

2-3-4 树

含义如下:

2 节点 包含两个子节点和一个数据元素。
3 节点 包含三个子节点和一个数据元素。
4 节点 包含四个子节点和一个数据元素。
图片

2-3-4 树,它的每个非叶子节点,要么是 2 节点,要么是 3 节点,要么是 4 节点,且可以自平衡,所以称作 2-3-4 树。

规则如下:

规则 1 加入新节点时,不会往空的位置添加节点,而是添加到最后一个叶子节点上。
规则 2 四节点可以被分解三个 2-节点组成的树,并且分解后新树的根节点需要向上和父节点融合。
插入操作
原本的 2-3-4 树,如下图:

图片

对于上图的 2-3-4 树,插入一个节点 17,由于规则 1,节点 17 不会加入节点 [16,18,20] 的子树,而是与该节点融合。

图片

由于规则 2,节点 [16,17,18,20] 是一个 4 节点,将该节点进行拆解成新的树,将 18 作为子树的根节点进行拆分。

图片

此时树暂时失去了平衡,我们需要将拆分后的子树的根节点向上进行融合。

图片

同理可得,由于规则 2,节点 [6,10,14,18] 是一个 4 节点,将该节点进行拆解成新的树,将 14 作为子树的根节点进行拆分,完成了 2-3-4 树的构建。

图片

总结了下插入节点的过程,无非也就为了符合两条规则,那么,2-3 树,2-3-4 树都有了,那是不是也有 2-3-4-5 树,2-3-4-5–…-n 树的存在呢?

事实上是有的,世人把这一类树称为一个名字:B 树。

B 树

B 树,表示的是一类树,它允许一个节点可以有多于两个子节点,同时,也是自平衡的,叶子节点的高度都是相同的。

所以,为了更好地区分一颗 B 树到底属于哪一类树,我们给它一个新的属性:度(Degree):一个节点能有多少箭头指向其他节点。

具有度为 3 的 B 树,表示一个节点最多有三个子节点,也就是 2-3 树的定义。具有度为 4 的 B 树,表示一个节点最多有四个子节点,也就是 2-3-4 树的定义。

图为 4 的 B 树的示例图:

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

793892)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值