【数据结构与算法】第四章:树
标签(空格分隔): 【数据结构与算法】
第四章:树
4.1 预备知识
树
一棵树是一些节点的集合.一棵树是 个节点和 条边的结合,其中一个节点叫做根.
- 空树:这个集合是空集.
- 这个集合非空时,一颗树由 根(root) 节点 以及0个或者多个非空的子树 组成的.这些子树中的每一棵的根都被来自 的一条有向的边(edge)所连接.
- 儿子(child):每一颗子树的根称作根 的儿子.
- 父亲(child): 是每一颗子树的根的父亲.除去根节点外,每个节点都有且仅有一个父亲.
举例
- 在上图的树中,节点 是根节点.
- 节点 由一个父亲 和三个儿子 .
- 树叶(leaf):没有儿子的节点.例如上图中 .
- 兄弟(sibling):就具有相同父亲的节点.例如上图中 .
- 类似地,可以定义祖父(grandparent)和孙子(grandchild).
- 路径(path):从节点 的路径定义为节点 的一个序列,其中节点 是节点 的父亲, .
- 路径的长度(length):该边路径上的边的条数,即 .对于每个节点本身而言,它有一条到自己本身的长为 0 的路径.注意一棵树从根到每个节点仅有一条路径.
- 深度(depth):节点 的深度为从根节点到 的唯一路径的长.根节点的深度为 0 .
- 高(height):从 得到一片树叶的最长路径的长度.所有的树叶的高都是 0 ;一条树的高等于根节点的高;
- 如果存在一条 到 的路径,那么 是 的一位 祖先(ancestor) , 是 的一个 后裔(descendant) .如果 那么 是 的一位 真祖先(proper ancestor), 是 的一个 真后裔(proper descendant).