导图社区 二叉树、黑红树知识点考试笔记
这是一篇关于二叉树黑红树知识点考点整理的结构思维导图,阐述了它的定义,二叉树常考点,二叉搜索树,平衡二叉树,黑红树的知识点,感兴趣的小伙伴可以看看。
网店详情页排版方法分享~包括中心页面组成,优质详情必备,详情页的排版参考方法。感兴趣的小伙伴可以看看哦~
喷绘色彩基础培训方案,内容涵盖色彩基础,喷绘写真。框架清晰,内容丰富,希望对小伙伴有所帮助哦~
酒窖营销计划方案,包括结果目标,过程目标。框架清晰,内容丰富,有需要的小伙伴可以看看哦~ 可供大家参考,借鉴,交流。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
二叉树、黑红树知识点考试笔记
1. 定义
1.1. 用于描述事物与事物之间的层次关系,由N个结点构成的有限集合
1.1.1. 对于任意N>0的非空树
1.1.2. 包含根节点(Root)
1.1.3. 其余节点可分为M个互不相交的有限集,其中每个集合本身又是原来树的子树
1.2. 基本概念术语
1.2.1. 结点的度(Degree):结点的子树个数
1.2.2. 树的度:树的所有结点中最大的度数
1.2.3. 叶结点:度数为零的结点
1.2.4. 父结点,子结点
1.2.5. 兄弟结点(Sibling):具有同一父结点的各结点彼此是兄弟结点
1.2.6. 祖先结点(Ancestor):沿根结点到某一结点的所有结点都是这个结点的祖先结点
1.2.7. 子孙结点(Descendant):某一结点子树中的所有结点
1.2.8. 结点的层次(Level):根节点在1层,其他结点层数是父结点层数+1
1.2.9. 树的深度(Depth):树的所有节点中最大层次是这棵树的深度
1.3. 二分查找判定树
1.3.1. 判定树上每个节点需要查找的次数刚好是该节点所在层数
1.3.2. 查找次数不会超过判定树的深度,N个节点的判定树深度[Log₂N]+1
1.3.3. 四层满二叉树的平均查找成功次数:ASL=(8*4+4*3+2*2+1)/15=3
1.4. 表示方法
1.4.1. 右边顺时针旋转45°就是一课二叉树
2. 二叉树(Binary Tree)
2.1. 子树左右有顺序之分
2.2. 几种特殊的二叉树
2.2.1. 斜二叉树
2.2.2. 完美二叉树/满二叉树
2.2.3. 完全二叉树
2.3. 重要性质
2.3.1. 深度为k的二叉树有最大结点总数
2.3.2. 第i层最大结点树是
2.3.3. 任何非空二叉树【 叶结点的个数 = 度为2的非叶节点的个数+1 】
2.3.3.1.
2.3.3.2. 边数=n。+ n₁ + n₂ - 1
2.3.4. 二叉树的高度
2.3.4.1. 一个二叉树的高度等于其左右子树中的最大高度的+1:Height=max(H左,H右)+1
2.3.4.2. 用后序遍历递归取得左右子树的高度
2.3.5. 由两种遍历序列确定二叉树,已知中有中序
2.4. 基本操作集
2.4.1. 二叉树BinTree,树结点元素ElementType
2.4.2. Boolean IsEmpty(BinTree BT); //判断BT是否为空
2.4.3. BinTree CreatBinTree(); //创建一个二叉树
2.4.4. void OverTraversal(BinTree BT); //遍历,按某种顺序访问每个结点
2.4.5. 常用的遍历方法有先序,中序,后序,层次遍历(上到下,左到右)
2.5. 完全二叉树顺序结构表示
2.5.1. 第i个元素的父结点下标i/2
2.5.2. 第i个元素的左子节点下标2*i,右儿子结点的下标2*i+1
2.5.3. 缺点:二叉树需要构建成完全二叉树,会造成大量空间浪费
2.5.3.1. 静态链表表示方法
2.5.3.1.1. 根在T[1]:判断left和right中没用到的下标(1)
2.5.3.1.1.1.
2.6. 二叉树的遍历
2.6.1. 前中后序遍历
2.6.1.1.
2.6.2. 非递归堆栈实现前中后序遍历
2.6.2.1.
2.6.3. 队列实现层序遍历
2.6.3.1.
2.7. 二元运算表达式树
2.7.1. 叶结点运算数非叶结点运算符号
2.7.2. 中序受运算符优先级影响不准(输出左右子树时加括号)
3. 二叉搜索树(Binary search Tree)
3.1. 左子树所有结点都小于根结点,右子树所有结点都大于根结点
3.1.1. 子主题 1
3.1.1.1. 子主题 1
3.1.1.1.1. 子主题 1
3.1.1.1.1.1.
3.2. Position Find(ElementType X,BinTree BST);
3.2.1. FindMin
3.2.1.1.
3.2.2. FindMax
3.2.2.1.
3.3. BinTree Insert(ElementType X,BinTree BST);
3.4. BinTree Delete(ElementType X,BinTree BST);
3.4.1.
3.5. 堆栈实现二叉树前中后序的非递归遍历
3.6. 队列实现二叉树的层序遍历(层次输出还需要在当前遍历最有结点加换行)
4. 平衡二叉树(AVLTree)
4.1. 不同的插入次序导致不同的深度, 平均查找次数ASL也不同
4.2. AVL树左右子树高度差绝对值不超过1
4.3. 高度=层数-1 高度H的最小结点数为斐波那契数+1
4.4. 插入删除时候要保证二叉树高度差平衡因子绝对值不超过1
4.4.1. LL旋转,LR旋转,RR旋转,RL旋转等一系列保持平衡操作
5. 红黑树RB-Tree
5.1. 和平衡二叉树类似都是通过插入删除时通过一系列操作保持二叉查找树的平衡
5.2. STL和Linux都采用红黑树作为平衡树的实现
5.3. 五个性质
5.3.1. 结点是红色或黑色
5.3.2. 根节点是黑色
5.3.3. 每个叶节点(也叫NIL结点,空节点)是黑色的
5.3.4. 每个红色结点的两个子结点都是黑色的
5.3.5. 从任意结点到其每个叶子(子孙叶节点)的所有路径都包含相同数目的黑色结点
有红必有黑,有黑不一定有红
5.4. 与平衡二叉树的区别
5.4.1. 最坏运行时间也良好O(LogN)
5.4.2. 插入相同于AVL最多两次旋转,删除优于AVL最多三次旋转,大量插入删除时不用频繁rebalance
5.4.3. 虽然AVL高度平衡,查找效率更高