【面试】数据结构(三)树【自用】

本文详细介绍了二叉树的概念,包括二叉树的遍历方式如先序、中序和后序遍历,以及二叉树的种类如满二叉树、完全二叉树和二叉搜索树。重点讨论了二叉搜索树的优点和缺点,以及在不平衡时导致的时间复杂度问题。接着,文章提到了平衡二叉树,特别是AVL树,阐述了其保持平衡的特性及旋转策略,最后简要提及红黑树作为AVL树的一种拓展。
摘要由CSDN通过智能技术生成

数据结构

• 二叉树
• 二叉树:就是每个节点都只能有两个子节点的树结构,俗称 “大裤衩”,特别形象。
• 通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。
在这里插入图片描述

• 二叉树的遍历方式
2.1二叉树的遍历主要有三种:
1)先序遍历(根左右)
2)中序遍历(左根右)
3)后序遍历(左右根)
2.2 先序遍历(根左右*
我先从第一种先序遍历开始谈起,主要的遍历顺序如下:
1)先访问根结点
2)然后先序遍历左子树
3)然后先序遍历右子树
还是举例说明,先序遍历下图

2.3 中序遍历(左根右)
1)先中序遍历左子树
2)然后是根结点
3)然后中序遍历右子树
还是举例说明,中序遍历同一颗二叉树
在这里插入图片描述

2.4 后序遍历(左右根)
1)后序遍历左子树
2)后序遍历右子树
3)然后访问根节点
还是举例说明,后序遍历同一颗二叉树
在这里插入图片描述

• 二叉树有哪些种类
基本包含:
• 满二叉树
在这里插入图片描述

• 完全二叉树
在这里插入图片描述

• 二叉搜索树:3.3.二叉查找/搜索/排序树-BST
在这里插入图片描述
备注:下面我就以二叉搜索树来统称,但是你要知道二叉搜索树、二叉查找树、二叉排序树,其实是同一种树。
在这里插入图片描述

3)二叉搜索树的优缺点
优点:查找速度快,二叉查找树比普通树查找更快
缺点:出现平衡问题
在这里插入图片描述4)二叉搜索树的时间复杂度
时间复杂度
二叉查找树比普通树查找更快,查找、插入、删除的时间复杂度为O(logN)。
缺点
二叉查找树有一种极端的情况,就是会变成一种线性链表似的结构,此时时间复杂度就变味了O(N),为了解决这种情况,所以出现了下面我即将谈到的二叉平衡树。
备注:时间复杂度
O(1):最低的时空复杂度,也就是耗时与输入数据大小无关,无论输入数据增大多少倍,耗时/耗空间都不变。哈希算法就是典型的O(1)时间复杂度,无论数据规模多大,都可以在一次计算后找到目标。
O(n):代表数据量增大几倍,耗时也增大几倍。比如常见的遍历算法。
O(logn):当数据增大n倍时,耗时增大logn倍(这里的log是以2为底的,比如,当数据增大256倍时,耗时只增大8倍,是比线性还要低的时间复杂度)。二分查找就是O(logn)的算法,每找一次排除一半的可能,256个数据中查找只要找8次就可以找到目标。

3.4.平衡二叉树(AVL树)
1)平衡二叉树
平衡二叉树全称平衡二叉搜索树,也叫AVL树,是一种自平衡的树,从上面二叉搜索树升级过来的,重点是改进了平衡问题。
2)平衡二叉树的特征
在这里插入图片描述

• AVL树也规定了左结点小于根节点,右结点大于根节点。
• 并且还规定了左子树和右子树的高度差不得超过1,这样保证了它不会成为线性的链表。

3)AVL树怎么解决平衡
主要就是通过左旋和右旋来解决,防止特殊情况下出现BST树那样的线性结构。所以通过下图的左旋和右旋来解决上面的平衡问题。
• 左旋与右旋

但也有对应的缺点,由于要维持自身的平衡,所以进行插入和删除结点操作的时候,需要对结点进行频繁的旋转。
• 红黑树也属于AVL树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值