数据结构-树

来源:互联网 发布:均值漂移算法原理 编辑:程序博客网 时间:2024/06/16 10:11

树:

这里写图片描述
这里写图片描述

  • 结点的度
    结点拥有的子树数称为结点的度。度为0的结点称为叶子结点或终端结点,度不为0的结点称为非终端结点或分支结点。除根结点以外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。
    这里写图片描述

  • 层次与深度
    这里写图片描述

这里写图片描述

  • 有序与无序树
    这里写图片描述

  • 树林
    这里写图片描述

二叉树小结

  • 树由边(直线)连接的节点(圆)组成
  • 根是树种最顶端的节点,她没有父节点
  • 二叉树中,节点最多有两个子节点
  • 二叉搜索树中,所有A节点左边子孙结点的关键字值逗比A小,所有邮编子孙结点的关键字值都大于或等于A
  • 树执行查找、插入、删除的时间复杂度都是O(logN)
  • 节点表示保存在树中的数据对象
  • 程序中通常用节点到子节点的引用来表示边
  • 遍历树是按某种顺序访问数中所有的节点
  • 最简单的遍历方法是前序、中序和后序
  • 非平衡树是指根左边的后代比右边多,或者相反,右边的后代比左边多。
  • 查找节点需要比较要找到额关键字值和节点的关键字值。如果要找的节点关键值小就转向那个节点的左子节点,如果打就转向右子节点。
  • 插入需要找到插入新节点的位置并改变他父节点的子字段来指向他
  • 中序遍历按照关键值的升序访问节点
  • 前序和后序遍历对解析代数表达式是有用的
  • 如果一个节点没有子节点,删除他只要把它的父节点的子字段置为null即可
  • 如果一个节点有一个子节点,把他的父节点的子字段置为他的自己诶单就可以删除他
  • 如果一个节点有两个子节点,删除他要用他的后继来代替它
  • A节点的后继是以A的右子节点为根的子树中关键之最小的那个节点
  • 删除操作中,如果节点A有两个子节点,会根据后继是被删节点的右子节点还是被删节点右子节点的左子孙节点出现两种不同的情况
  • 数组中重复关键字值的节点会产生一些问题,因为只有第一个能被查找到
  • 哈夫曼是二叉树,用于压缩算法,这种方法称为哈夫曼编码
  • 哈夫曼编码中,最经常出现的字符的编码位数最少,很少出现的字符编码位数要多一些

红-黑树总结

  • 保持二叉搜素树的平衡是非常重要,这样可以使找到的给定节点所必须的时间尽可能短。
  • 插入有序的数据将创建最不平衡的树,他查找的时间复杂度为O(N)
  • 在红-黑平衡的方法中,每个节点都有一个新的特征:它的颜色不是红的就是黑的
  • 一组称为红-黑规则的规则,详细说明了允许排列不同颜色节点的方法
  • 当插入(或删除)一个节点时应用这些规则
  • 一次颜色变换把一个黑色节点和他的两个红色子节点改成一个红色节点和两个黑色子节点
  • 在一次旋转中,指定一个节点为顶端节点。
  • 右旋把顶端节点移到她的右子节点的位置,并把顶端节点的左子节点移到顶端节点的位置
  • 左旋把顶端节点移到他的左子节点的位置,并把顶端节点的右子节点移到顶端节点的位置
  • 当顺着树向下查找新节点的插入位置时,应用颜色变幻,并且有时应用旋转。颜色变换通过简单的方法,就是树再插入后恢复成正确的红-黑树
  • 新节点插入之后,再次检查红-红冲突。如果发现有违背红-黑规则的现象,执行适当的旋转使树恢复红-黑正确性
  • 这些调整使树成为平衡的,或者至少大致平衡
  • 在二叉树中加入红-黑平衡对平衡的执行效率只有很小的负面影响,然而却避免了对有序的数据操作的最坏的性能。
  • 平衡的二叉搜索树是合乎需要的,因为他避免了在插入顺序数据是的性能变慢
1 0