树的基本知识

版权声明:转载请写明出处,谢谢! https://blog.csdn.net/wilson1068/article/details/88371606

树的基本知识

树是数据结构常用的类型,可能很多人以为工作中没有用到,实际上都被一些接口给隐藏起来了。如使用 Java 的 Map,里面就涉及红黑树(JDK 1.7 以上版本)。

这里先介绍一些简单的定义。

后续看情况,说一下(主要是二叉树的各种变种)满二叉树、完全二叉树、AVL树、二叉查找树、红黑树、B 树、B+ 树、B* 树、字典树、后缀树、主席树、哈夫曼树、线段树(前面已经讲了)等等。

树有关的名词

树由节点(Nodes)和 边(edges)构成。树有根节点(root),边(deges),父节点(parent),子节点(child),叶节点(leaf)。

如果最多只允许两个子节点,即所谓的二叉树(binary tree)。不同的节点如果拥有相同的父节点,则彼此互为兄弟节点(siblings)。根节点至任何节点之间有唯一路径(path),路径所经过的边数,成为路径长度(length)。根节点至任一节点的路径长度,即所谓该节点的深度(depth)。根节点的深度永远是 0。 某节点至其最深子节点(叶节点)的路径长度,成为该节点的高度(height)。整棵树的高度,便以根节点的高度来代表。节点 A->B 之间如果存在(唯一)一条路径,那么 A 称为 B 的祖代(ancestor),B 称为 A 的子代(descendant)。任何节点的大小(size)是指其所有子代(包括自己)的节点总数。

其中的各个信息:

名称 英文名称 说明 示例
节点(结点) node A、B、C、D、E、F、G、H、I、J、K、L
节点的度 degree 节点的子树个数 A 节点的度为 2,B 节点的度为 2,……,G 节点的度为 1,……,L 节点的度为 0
树的度 所有结点中最大的度数 此树的度为 2
根节点 root A
父节点 parent 有子树的结点是其子树的根结点的父结点 A 是 B、C 的父节点;B 是 D、E 的父节点;C 是 F、G 的父节点……
子节点(孩子、子女等) child A 的子节点是 B、C ;B 的子节点是 D、E ;C 的子节点是 F、G……
兄弟节点 sibling 具有同一父结点的各结点彼此是兄弟结点 B、C 互为兄弟节点;D、E 互为兄弟节点;F、G 互为兄弟节点……
叶子节点(叶节点) leaf 度为 0 的节点 H、I、J、K、L
祖先节点(祖代) ancestor 沿树根到某一结点路径上的所有结点都是这个结点的祖先结点 ……;C 的祖先节点是 A;D 的祖先节点是 A、B;……
子孙节点(子代) descendant 某一结点的子树中的所有结点是这个结点的子孙 ……;C 的子孙节点是:F、G、L;D 的子孙节点是:H、I;……
层次 level 规定根结点在 1 层,其它任一结点的层数是其父结点的层数加 1 A 的层次是 1;B 的层次是 2;C 的层次是 2;D 的层次是 3;……
路径 path 根节点至任何节点之间有唯一路径
路径的长度 length 路径所经过的边数,为路径长度 A 的路径长度为 0;B的路径长度为 1;C 的路径长度为 1;D 的路径长度为 2;……
dege 节点到相邻节点的路径长度为 1 的路径为一条边
高度 height 节点到最深叶子节点的路径长度为高度 A 的高度为 3(到 H、I、J、K、L);C 的高度为为 2(到 L);F的高度为0;……
树的深度 depth 根节点至任一节点的路径长度 A 树的深度为 3

二叉树示例

猜你喜欢

转载自blog.csdn.net/wilson1068/article/details/88371606
今日推荐