目录
排序
二分查找法
Tree
二叉查找树
AVL Tree
红黑树
B Tree
B+ Tree
Tree-03-图解 AVL 自平衡二叉查找树及 java 实现
Tree-04-图解红黑树 Red Black Tree 及 java 实现
Tree-05-伸展树 Splay Tree 及 java 实现
什么是树
树(Tree)是由多个节点(Node)的集合组成,每个节点又有多个与其关联的子节点(Child Node)。
子节点就是直接处于节点之下的节点,而父节点(Parent Node)则位于节点直接关联的上方。
树的根(Root)指的是一个没有父节点的单独的节点。
所有的树都呈现了一些共有的性质:
-
只有一个根节点;
-
除了根节点,所有节点都有且只有一个父节点;
-
无环。将任意一个节点作为起始节点,都不存在任何回到该起始节点的路径。(正是前两个性质保证了无环的成立。)
常用概念
根(Root):树中最顶端的节点,根没有父节点。
子节点(Child):节点所拥有子树的根节点称为该节点的子节点。
父节点(Parent):如果节点拥有子节点,则该节点为子节点的父节点。
兄弟节点(Sibling):与节点拥有相同父节点的节点。
子孙节点(Descendant):节点向下路径上可达的节点。
叶节点(Leaf):没有子节点的节点。
内节点(Internal Node):至少有一个子节点的节点。
度(Degree):节点拥有子树的数量。
边(Edge):两个节点中间的链接。
路径(Path):从节点到子孙节点过程中的边和节点所组成的序列。
层级(Level):根为 Level 0 层,根的子节点为 Level 1 层,以此类推。
高度(Height)/深度(Depth):树中层的数量。比如只有 Level 0,Level 1,Level 2 则高度为 3。
类别
二叉查找树(Binary Search Tree)
二叉查找树,笛卡尔树,T 树
自平衡二叉查找树(Self-balancing Binary Search Tree)
AA 树,
AVL 树,
红黑树(Red-Black Tree),
伸展树(Splay Tree)
B 树(B-Tree)
2-3 树,
2-3-4 树,
B 树,
B+ 树,
B* 树
字典树(Trie-Tree)
后缀树,
基数树,
三叉查找树,
快速前缀树
空间数据分割树(Spatial Data Partitioning Tree)
R 树,
R+ 树,
R* 树,
线段树,
优先 R 树
小结
参考资料
http://cslibrary.stanford.edu/110/BinaryTrees.html
https://www.javatpoint.com/binary-tree
https://www.javatpoint.com/tree