树是一种应用特别广泛的数据结构,能快速地进行查找。比较常用的主要有二叉排序树、字典树、红黑树、平衡二叉树,一般都会利用递归实现树的遍历。
1.完全二叉树
即满二叉树从左至右,从下往上依次删除节点形成的树。二叉树的相关性质如下:
2. 二叉排序树
满足特定条件的二叉树,能实现快速地查找,具有一个很重要的性质:中序遍历结果为有序的序列。leetCode算法题常常会涉及。
3. 平衡二叉树
二叉排序树的查找效率很大程度上会取决于树的高度,为了进一步提升二叉排序树的查找效率,对二叉排序树进行优化,形成了平衡二叉树,即左右子树的绝对高度差不超过1的二叉排序树。主要难点在于调整树的结构
4. 黑红树
红黑树可能大家了解的不是很深,与二叉平衡树一样,它也是一种高效的查找树,最大的特点是树中的节点会赋予不同的颜色进行标记。STL库中的哈希表map的底层结构就是用红黑树实现的。
5. 字典树
顾名思意,广泛应用于文本查找。除根节点外,树中的每个节点只存储一个字符,从根节点到任意一个节点所经过的路径分别存储一个对应的字符串,一般用来处理英文字符的,汉字形状过多。一颗简单的字典树结构如下:
基本性质如下:
5.1 letCode题型
Add and Search Word - Data structure design
[1]http://dongxicheng.org/structure/trietree/
[2]《STL源码剖析》——侯捷
[3]《数据结构高分笔记》