第二天数据结构
1. 平衡二叉树、二叉排序树、完全二叉树、二叉搜索树的区别及如何构造★★★
- 平衡二叉树:是二叉排序树的一种,要求任意节点的左右子树高度差的绝对值不超过 1,以保证查找效率。
- 二叉排序树(即二叉搜索树):左子树节点值小于根节点,右子树节点值大于根节点,中序遍历是有序序列。
- 完全二叉树:除最后一层外,其他层节点数都达到最大值,最后一层节点从左到右连续排列。
- 构造:
- 平衡二叉树:在二叉排序树插入、删除节点时,通过旋转操作(左旋、右旋、左右旋、右左旋)保持平衡。
- 二叉排序树:依次插入节点,保证左小右大。
- 完全二叉树:按层依次填充节点,可通过数组顺序存储构造。
2.如何由遍历序列构造一颗二叉树?/已知先序序列和后序序列能否重现二叉树?
仅先序和后序序列,若树中节点无重复值且非单支树,不能唯一重现二叉树。
3.B树是什么?在数据库中有什么应用?(B数和B+树的区别)
- B 树:一种多路平衡查找树,每个节点有多个分支,节点包含多个关键字,用于外存数据组织。
- 数据库应用:用于索引,加快数据查询速度。
- B 树和 B + 树区别:B + 树所有数据在叶子节点,叶子节点间有指针相连;B 树数据可在非叶子节点,查询效率更稳定,B + 树更适合范围查询。
4.红黑树原理是什么?建立过程?
- 红黑树是二叉搜索树,节点有红 / 黑颜色,通过颜色规则(根黑、红节点子节点黑、从任一节点到其叶子的路径含相同数目的黑节点等)保持平衡。
- 建立过程:插入节点后,通过变色、旋转(左旋、右旋)调整,使颜色规则满足。
5.二分搜索和单纯的线性搜索的区别/时间复杂度
- 区别:二分搜索要求数据有序,每次取中间元素缩小范围;线性搜索无序也可,逐个遍历元素。
- 时间复杂度:二分搜索是(O(log n),线性搜索是O(n)。
6.插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序(必考)、堆排序、基数排序等排序算法的基本思想是什么?时间复杂度?是否稳定?给一个例子,问冒泡和快速排序在最坏的情况下比较几次?(排序必考)★★★★★★