01 树的概念
树结构是一种描述非线性层次关系的数据结构。除根结点外,其余每个结点有且仅有一个直接前驱。每个结点可以有任意多个直接后继。
- 树中的结点不能被边连接成环。
- 树可以没有结点,即为空树。
- 对有
n
个结点的树,边数一定是n-1
。
英文名词表示:tree, root, node, leaf, edge, child, subtree
02 树的相关专业名词
- 父亲结点,儿子结点,兄弟结点,祖先结点,子孙结点
- 结点的度, 树的度
把结点的子树棵树称为结点的度;
树中结点的最大的度称为树的度; - 叶结点(度为
0
的结点),分支结点 - 树的深度:(自顶向下)根结点为第一层;
- 树的高度:(自底向上)
- 有序数,无序树
- 森林: N棵互不相交的树的集合。
03 二叉树
- 二叉树的每个结点最多只能有两个子结点。二叉树有左子树和右子数之分。
- 区分二叉树和度为2的树:二叉树有左右子树之分。
- 要么二叉树没有根结点,是一棵空树。
- 要么二叉树由根结点,左子树,右子树组成,且左子树和右子树都是二叉树。(二叉树的子树仍然是二叉树)
- 二叉树的第i层最多有 2i−1 个节点。
- 深度为k的二叉树最多有2k−1个节点。
- 对于任何一棵二叉树T,如果其终端节点数(即叶节点数)为n0,度为2的节点数为n2,则n0=n2+1。
04 满二叉树
满二叉树即在二叉树中除最下层的叶节点外,每层的结点都有两个子节点。
- 每一层的结点个数都达到了当层能达到的最大结点数。
05 完全二叉树
完全二叉树即在二叉树中除二叉树最后一层外,其他各层的结点数都达到最大个数,且最后一层叶节点按照从左向右的顺序连续存在,只缺最后一层右侧若干结点。
完全二叉树的特性
- 顺序存储 若树中包含N个结点,对于任意一个结点m来说,
- 如果
m != 1
,则结点m的父结点的编号为m/2
; - 如果
2*m <= n
,则结点m的左子树根结点的编号为2*m
;若2*m > n
,则无左子树,也没有右子树。 - 如果
2*m+1 <= n
,则结点m的右子树根结点编号为2*m+1
;若2*m+1 > n
,则无右子数。 - 对于完全二叉树来说,其深度为 [log2n]+1。