一、树基础知识
树是一种递归非线性数据结构,是由n(n >=0)个结点组成的有限集合。 其中一个节点被指定为树的根,而其余节点被称为根的子节点。树的节点个数为0的时候叫做空树。
树的一些基本术语:
-
根节点 :根节点是没有任何父节点的节点。
-
子树: 如果根节点不为空,则根节点下面的树称为根节点的子树。
-
叶节点: 树的节点,没有任何子节点,称为叶节点。 叶节点是树的最底部节点。 叶节点度为0。
-
路径: 连续边的序列称为路径。
-
祖先节点: 节点的祖先是从根到该节点的路径上的任何前节点。根节点没有祖先节点。
-
度: 节点的度数等于子节点数,节点数。 在完整的二叉树中,每个节点的度数等于2。
-
级别编号: 为树的每个节点分配一个级别编号,使得每个节点都存在于高于其父级的一个级别。树的根节点始终是级别0。
-
深度:树中根结点深度为0,根结点的孩子深度为1,依次类推。对于任意节点n,n的深度为从根到n的唯一路径长,根的深度为0;
高度:对于任意节点n, n的高度为从n到一片树叶的最长路径长,所有树叶的高度为0;
树的一些基本类型: -
二叉树 / 完全二叉树 / 二叉查找树 / 满二叉树 / 平衡二叉树
二叉树
树的基本操作都是根据二叉树来示范的,也是树表家族最为基础的结构,因为每一棵树都可以用二叉树来表示。二叉树是每个节点最多可以有2个子节点的树。
二叉树性质
- 二叉树的第 i i i层至多有 2 i − 1 2^i-1 2i−1个结点;
- 深度为 k k k的二叉树至多有 2 k − 1 2^k-1 2<