zoukankan      html  css  js  c++  java
  • 数据结构与算法--树

    1. 术语

    1. 节点的深度: 对于任意节点 n, n 的深度为从根到 n 的唯一路径长, 根的深度为 0;
    2. 节点的高度: 对于任意节点 n, n 的高度为从 n 到一片树叶的最长路径长, 所有树叶的高度为 0;
    3. 树的深度: 树中所有节点的最大深度, 称作树的深度;
    4. 树的高度: 树的高度等于它的根节点的高度;
    5. 结点的度(Degree): 结点拥有的子树数目称为结点的度;

    2. 树的种类

    • 有序树: 树中任意节点的子节点之间有顺序关系, 这种树称为有序树;
      • 二叉树: 每个节点最多含有两个子树的树称为二叉树;
        • 完全二叉树: 对于一棵二叉树, 假设其深度为d(d>1). 除了第d层外, 其它各层的节点数目均已达最大值, 且第d层所有节点从左向右连续地紧密排列, 这样的二叉树被称为完全二叉树;
          • 满二叉树: 所有叶节点都在最底层的完全二叉树;
        • 平衡二叉树(AVL树): 当且仅当任何节点的两棵子树的高度差不大于1的二叉树;
      • B树: 一种对读写操作进行优化的自平衡的二叉查找树, 能够保持数据有序, 拥有多于两个子树.

    3. 平衡二叉树

    假设一颗 AVL 树的某个节点为 A, 有四种操作会使 A 的左右子树高度差大于 1, 从而破坏了原有 AVL 树的平衡性.
    平衡二叉树插入节点的情况分为以下四种:

    | 插入方式  | 描述                                                                             | 旋转方式 |
    |--------------|----------------------------------------------------|--------------|
    | LL            | 在 A 的左子树根节点的左子树上插入节点而破坏平衡  | 右旋转 |
    | RR           | 在 A 的右子树根节点的右子树上插入节点而破坏平衡  | 左旋转 |
    | LR           | 在A的左子树根节点的右子树上插入节点而破坏平衡    | 先左旋后右旋 |
    | RL           | 在 A 的右子树根节点的左子树上插入节点而破坏平衡  | 先右旋后左旋 |

    平衡二叉树的失衡调整主要是通过旋转最小失衡子树来实现的.

  • 相关阅读:
    Liferay 6.2 改造系列之一:源码编译和服务启动
    安装Maven、Eclipse设置、添加地址JAR
    HTTP状态码查询
    Android Manifest 权限描述大全
    Bootstrap Table 表格参数详解
    Maven项目在Eclipse中调试 Debug
    J2EE中使用jstl报http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar错
    在Eclipse中导入SVN库里的Maven项目
    手机最后一位居然代表你的婚姻爱情
    老九门1-48(全集)
  • 原文地址:https://www.cnblogs.com/xxoome/p/14331388.html
Copyright © 2011-2022 走看看