树的概念
树的定义
树的形式化定义: T = {D, R} (D表示 数据对象,R 表示数据关系)
D是包含n个节点的有限集合(n≥0)。当n = 0时为空树,否则关系 R 满足以下条件:
① 有且仅有一个节点 d0 ∈ D,它对于关系R来说没有前趋节点,节点d0称作树的根节点。
② 除根节点外每个节点有且仅有一个前趋节点。
③ D中每个节点可以有零个或多个后继节点 。
树的递归定义: 树是由n (n≥0)个节点组成的有限集合(记为T)。其中:
① 如果n = 0, 它是一棵空树,这是树的特例。
② 如果n > 0, 其中存在一个唯一节点作为树的根节点(root),其余节点可分为m(m≥0)个互不相交的有限子集T1、T2 、…、Tm,而每个子集本身又是一棵树 ,称为根节点root的子树。
树中所有节点构成一种层次关系。
树的实际应用
① 红黑树: JAVA8中的hashMap满足一定的阈值,自动扩容时会变为红黑树,treeMap,linux中的epoll模型,nginx中的Timer管理等。
② B,B+树: 广泛用于数据库(mysql,oracle等)的索引。
③ 字典树: 用于海量文本词频统计,查询效率比哈希表还高。
④ 生活中的树状结构有公司职级关系,国家省市区级联,族谱等等都有树结构形式.
树的逻辑表示
(1) 树形表示法: 使用一棵倒置的树表示树结构,非常直观和形象。
(2) 文氏图表示法: 使用集合以及集合的包含关系来描述树结构。
(3) 凹入表示法: 使用线段的伸缩关系描述树结构。
(4) 括号表示法: 用一个字符串表示树。