树 (tree):
树是一种常见的数据机构,它是一个由有限节点组成的一个具有层次关系的集合,数据就存在树的 这些节点中。
根节点:
最顶层只有一个节点,称之为根节点,root节点。
叶子节点:
如果每个节点下方没有任何分叉的话,就是叶子节点。
节点的高度:
从某个节点出发,到叶子节点为止,最长简单路径上边的条数,称之为节点的高度。
节点的深度:
从根节点root出发,到某个节点边的条数,称为该节点的深度。
二叉树:
每个节点至多有两个子节点的树称为二叉树。
二叉树世界中,最为重要的概念是 平衡二叉树、二叉查找树、红黑树
2. 平衡二叉树的性质:
- (1) 树的左右高度差不能超过 1
- (2) 任何往下递归的左子树与右子树,必须符合第一条性质
- (3) 没有任何节点的k空树和只有根节点的树也是平衡二叉树
二叉查找树
二叉查找树又称为二叉搜索树, 即 Binary Search Tree, 也称为 二叉排序树。Java中集合的最终 目的就是加工数据,二叉查找树也是如此。
二叉查找树特殊要求:
- 1. 对于任意节点来说: 它的左子树上所有的节点的值都小于它,而它的右子树上所有节点的值都大于它。
- 2.查找过程: 从根节点开始,沿简单的判断往下走,小于节点值往左走,大于节点的值往右走,直到找到 目标数据或者达到叶子节点还未找到。
遍历所有节点常用的方式: 前序遍历、中序遍历、后序遍历
三者规律如下:
- (1). 在任何递归子树中,左节点一定在右节点之前先遍历
- (2). 前序、中序、后序,仅指根节点在遍历时的位置顺序
- 前序遍历: 根节点、左节点、右节点
- 中序: 左节点、根节点、右节点
- 后序: 左节点、右节点、根节点