阿里巴巴二面:数据结构与算法夺命连环17问

本文详细探讨了阿里巴巴面试中常见的数据结构与算法问题,包括树、BST、AVL树、红黑树、B-树和B+树等,深入讲解了它们的性质、优势以及实际应用。此外,还提到了HashMap、ConcurrentHashMap和JVM内存管理等Java编程中的关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

金三银四真的太卷了,最近小编在整理java面试题汇总的时候,无意中寻到了这份阿里面试官手册,这份面试题还真的与以往的java核心面试知识点有大不同,这份面试官手册是完全站在面试官出题的角度分析问题,要问它有多香我们且看目录就完事了,不过小编这里只摘取了一部分面试官会经常问的分享给到大家。

一、分布式

二、中间件

三、大数据与高幵发

四、数据库

五、设计模式与实践

六、数据结构与算法

六、数据结构与算法

1、树

树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。

把它叫做"树"是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点∶(01)每个节点有零个或多个子节点;(02)没有父节点的节点称为根节点;(03)每一个非根节点有且只有一个父节点;(04)除了根节点外,每个子节点可以分为多个不相交的子树。

2、BST树

二叉树的定义

二叉树是每个节点最多有两个子树的树结构。它有五种基本形态︰二叉树可以是空集;根可以有空的左子树或右子树﹔或者左、右子树皆为空。

二叉树的性质

二叉树有以下几个性质:TODO(上标和下标)性质1∶二叉树第i层上的结点数目最多为2**(i-1}**(i≥1)。性质2∶深度为k的二叉树至多有2k-1个结点(e1)。性质3∶包含n个结点的二叉树的高度至少为log2(n+1)。性质4∶在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1。

2.1性质1:

二叉树第层上的结点数目最多为2(l-1(≥1)

**证明︰**下面用"数学归纳法"进行证明。(O1)当i=1时,第i层的节点数目为2i-1]=2(0)=1。因为第1层上只有一个根结点,所以命题成立。(02)假设当i>1,第i层的节点数目为2i-1)。这个是根据(O1推断出来的!下面根据这个假设,推断出"第(i+1)层的节点数目为20)"即可。由于二叉树的每个结点至多有两个孩子,故"第(i+1)层上的结点数目”最多是"第i层的结点数目的2倍"。即,第(+1)层上的结点数目最大值=2x2(i-1=20)。故假设成立,原命题得证!

2.2性质2∶

深度为k的二叉树至多有2k)-1个结点(k≥1)

**证明︰**在具有相同深度的二叉树中,当每一层都含有最大结点数时,其树中结点数最多。利用"性质1"可知,深度为k的二叉树的结点数至多为:20+21+...+2k-1=2k-1故原命题得证!

2.3性质3∶

包含n个结点的二叉树的高度至少为log2 (n+1)

证明∶根据"性质2"可知,高度为h的二叉树最多有2h-1个结点。反之,对于包含n个节点的二叉树的高度至少为log2(n+1)。

2.4性质4∶

在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则nO=n2+1

**证明︰**因为二叉树中所有结点的度数均不大于2,所以结点总数记为n)="0度结点数n0)"+"1度结点数(n1)"+"2度结点数(n2)"。由此,得到等式一。(等式一)n=n0+n1+n2另一方面,0度结点没有孩子,1度结点有一个孩子,2度结点有两个孩子,故二叉树中孩子结点总数是:n1+2n2。此外,只有根不是任何结点的孩子。故二叉树中的结点总数又可表示为等式二。(等式二)n=n1+2n2+1由(等式一)和(等式二)计算得到:nO=n2+1。原命题得证!

3、BST树

定义∶二叉查找树(Binary Search Tree),又被称为二叉搜索树。设x为二叉查找树中的一个结点,x节点包含关键字key,节点x的key值记为keyx。如果y是x的左子树中的一个结点,则keyly]<=keyIx];如果y是x的右子树的一个结点,则keyy >= keyx。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值