二叉树巩固

二叉树的种类:普通二叉树、完全二叉树、满二叉树、线索二叉树、哈夫曼树、二叉搜索树(排序树,二叉查找树)、平衡二叉树、AVL平衡二叉树、红黑树、B树、B+树、堆

1、普通二叉树、完全二叉树、满二叉树

  • 二叉树:最多有两棵子树的树被称为二叉树
  • 满二叉树:二叉树中所有非叶子结点的度都是2,且叶子结点都在同一层次上
  • 完全二叉树:如果一个二叉树与满二叉树前m个节点的结构相同

2、线索二叉树
线索二叉树: https://blog.csdn.net/shenaisi/article/details/81291898(带索引)

3、 二叉搜索树(排序树,二叉查找树,BST)
特点: 左子树上结点均小于根结点;右子树上的结点均大于根节点;左右子树分别是BST
中序遍历的结果是有序的,可用于查找

4、平衡二叉树
左右子树的高度差不超过1

5、AVL平衡二叉树
平衡二叉树 + 二叉查找树的特性

6、 红黑树
R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。
红黑树的特性:
(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。 [注意:这里叶子节点,是指为空(NIL或NULL)的叶子节点!]
(4)如果一个节点是红色的,则它的子节点必须是黑色的。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
注意:
(01) 特性(3)中的叶子节点,是只为空(NIL或null)的节点。
(02) 特性(5),确保没有一条路径会比其他路径长出两倍。因而,红黑树是相对是接近平衡的二叉树。
红黑树示意图如下:
二叉树巩固_第1张图片
红黑树的应用
红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(lgn),效率非常高。
例如,Java集合中的TreeSet和TreeMap,C++ STL中的set、map,以及Linux虚拟内存的管理,都是通过红黑树去实现的。

7、B树
B 树是为了磁盘或其它存储设备而设计的一种多叉(下面你会看到,相对于二叉,B树每个内结点有多个分支,即多叉)平衡查找树。与本blog之前介绍的红黑树很相似,但在降低磁盘I/0操作方面要更好一些

8、B+树
B树的变形。

你可能感兴趣的:(实习面试)