树的概念简记
一、特点
树由节点及连接节点的边构成。
树有以下属性:
1、有一个根节点;
2、除根节点外,其他每个节点都与其唯一的父节点相连;
3、从根节点到其他每个节点都有且仅有一条路径;
此外,一般而言,一棵树要么为空,要么由一个根节点和零棵或多棵子树构成,子树本身也是一棵树,每棵子树的根节点通过一条边连到父树的根节点。
二、关键概念
1、节点
节点是树的基础,名字称作“键”,附加信息“有效载荷”。
2、边
两个节点通过一条边相连,表示它们之间存在关系。除了根节点以外,其他每个节点都仅有一条入边,出边则可能有多条。
3、根节点
根节点是树中唯一没有入边的节点。
4、路径
路径是由边连接的有序节点列表。
5、子节点
一个节点通过出边与子节点相连。
6、父节点
一个节点是其所有子节点的父节点。
7、兄弟节点
具有同一父节点的节点互为兄弟节点。
8、子树
一个父节点及其所有后代的节点和边构成一棵子树。
8、叶节点
叶节点没有子节点。
10、层数
节点 n 的层数是从根节点到 n 的唯一路径长度。
11、高度
树的高度是其中节点层数的最大值。
三、遍历
1、前序遍历
先访问根节点,然后递归地前序遍历左子树,最后递归地前序遍历右子树。
2、中序遍历
先递归地中序遍历左子树,然后访问根节点,最后递归地中序遍历右子树。
3、后序遍历
先递归地后序遍历右子树,然后递归地后序遍历左子树,最后访问根节点
四、二叉树
如果每个节点最多有两个子节点,我们就称这样的树为二叉树
1、完全二叉树
除了最底层(叶子层),其他每一层的节点都是满的,堆就是一种完全二叉树,且堆的叶子层一般都是从左到右填,堆又分小根堆和大根堆
1、最小堆(小根堆)
最小的元素一直在队首
2、最大堆(大根堆)
最大的元素一直在队首
3、二叉搜索树
二叉搜索性:小于父节点的键都在左子树中,大于父节点的键则都在右子树中
4、平衡二叉搜索树
平衡二叉搜索树的任何结点的左子树和右子树高度最多相差1
5、红黑树
红黑树是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,有如下特点
1. 每个结点或是红色的,或是黑色的。
2. 根结点是黑色的。
3. 每个为空的叶结点都是黑色的。
4. 如果一个结点是红色的,则它的两个子结点都是黑色的。
5. 对每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。