Open yangsirgo opened 4 years ago
别记了 到时候算吧。
二叉树:二叉树是每个结点最多有两个孩子的有序数,可以为空树,可以只有一个结点。
满二叉树(full binary tree 满的二叉树):任何结点,要么是叶子结点,要么是恰有两颗非空子树。
完全二叉树(complete binary tree 完整的二叉树):除了底下一层,上面的是满二叉树,底下的一层是从左到右排列的,左边的节点都是满的,缺的只是右边的节点。从上到下按序列数,正好能序列上,没有缺数,就是完全二叉树。官方的定义(最多只有最小面的两层结点的度可以小于2,并且最下面一层的结点全都集中在该层左侧的若干位置)。 备注: 完全二叉树是满二叉树最后一层少若干个右子节点。 满二叉树是完全二叉树。完全二叉树不是满二叉树。
查找二叉树(排序二叉树):任何一个节点的权值,大于其左孩子结点,小于其右孩子结点。提升查找效率。
最优二叉树(哈夫曼树): 它是一类带权路径长度最短的树。
线索二叉树:在每个结点中增加两个指针域来存放遍历时等到的前驱和后继信息。优化遍历的效率。
平衡二叉树:树中任一结点的左右树高度之差不超过1。每个结点的平衡度只能为-1,1,或者0(对于叶子结点,平衡度都是0;因为左子树为0,右子树也为0,相减呢是0) 示意图: 快速记忆:防止树不要太斜了,也就是两个子树高度差不要太大。
遍历时按某种策略访问树中的每个结点,且仅访问一次的过程。
前序遍历(先序遍历):根左右遍历
后序遍历:左右根遍历
中序遍历:左根右遍历 前中后指的是根所在的位置。遍历按一个根节点和两个爷子节点为整体处理。 已知先序遍历结果和后序遍历结果,无法推断中序遍历结果,因为无法将左子树节点和右子树节点区分开。
层序遍历:自上而下,自左向右依次访问各层级节点(高度一致的节点)。
完全二叉树,高度h与节点的个数n的关系是log2n+1。log2n是2的几次方等于n。
哈夫曼树的边长进行编码,编码长度与路径长度相关,左侧分支编码为0(或1),右侧分支编码为1(或0),从根节点到对应的叶子节点所有路径分支编码记录下来,即为叶子节点的编码。 备注: 树需要排序好,变成排序二叉树
大顶堆,小顶堆,是完全二叉树。 堆排序最大的特点是按大小快速的排列出前几位。
树与二叉树的特性
二叉树特性
别记了 到时候算吧。
特殊的树
二叉树:二叉树是每个结点最多有两个孩子的有序数,可以为空树,可以只有一个结点。
满二叉树(full binary tree 满的二叉树):任何结点,要么是叶子结点,要么是恰有两颗非空子树。
完全二叉树(complete binary tree 完整的二叉树):除了底下一层,上面的是满二叉树,底下的一层是从左到右排列的,左边的节点都是满的,缺的只是右边的节点。从上到下按序列数,正好能序列上,没有缺数,就是完全二叉树。官方的定义(最多只有最小面的两层结点的度可以小于2,并且最下面一层的结点全都集中在该层左侧的若干位置)。 备注: 完全二叉树是满二叉树最后一层少若干个右子节点。 满二叉树是完全二叉树。完全二叉树不是满二叉树。
查找二叉树(排序二叉树):任何一个节点的权值,大于其左孩子结点,小于其右孩子结点。提升查找效率。
最优二叉树(哈夫曼树): 它是一类带权路径长度最短的树。
线索二叉树:在每个结点中增加两个指针域来存放遍历时等到的前驱和后继信息。优化遍历的效率。
平衡二叉树:树中任一结点的左右树高度之差不超过1。每个结点的平衡度只能为-1,1,或者0(对于叶子结点,平衡度都是0;因为左子树为0,右子树也为0,相减呢是0) 示意图: 快速记忆:防止树不要太斜了,也就是两个子树高度差不要太大。
树的遍历
遍历时按某种策略访问树中的每个结点,且仅访问一次的过程。
前序遍历(先序遍历):根左右遍历
后序遍历:左右根遍历
中序遍历:左根右遍历 前中后指的是根所在的位置。遍历按一个根节点和两个爷子节点为整体处理。 已知先序遍历结果和后序遍历结果,无法推断中序遍历结果,因为无法将左子树节点和右子树节点区分开。
层序遍历:自上而下,自左向右依次访问各层级节点(高度一致的节点)。