• 树与二叉树


    一、树

    1. 树的定义

    • 非线性数据结构
    • 除根节点外,一个直接前驱,多个直接后继

    2. 树的逻辑表示方法

    • 树形表示法

    3. 树的基本术语

    • 结点的度、树的度、m次树
    • 分支结点、叶子结点
    • 路径、路径长度
    • 孩子结点、双亲结点、兄弟节点、子孙结点、祖先结点
    • 结点的层次、树的高度(深度)
    • 有序树、无序树
    • 森林

    4. 树的性质

    •  4个性质

    5. 树的基本运算

    • 查找
    • 插入或删除
    • 遍历

     6. 树的存储结构

    • 双亲存储结构:用一个数组存储结构体(数据+指向双亲的指针)
    • 孩子链存储结构:根据树的度确定指向孩子指针的个数,结构体(数据+指向孩子结点的指针数组)
    • 孩子兄弟链存储结构:一个数据元素域、一个指向第一个孩子的指针、一个指向下一个兄弟结点指针域

    二、二叉树

    1. 二叉树的概念

    • 结构简单、存储效率高、运算算法相对简单
    • 任何m次树都可以转换为二叉树
    • 严格区分左右子树
    • 五种基本形态:空、单结点、右为空、左为空、左右不为空
    • 满二叉树:完全二叉树的一种特例
    • 完全二叉树:最下面一层叶子结点都排列在左边,满二叉树是完成二叉树的一个特例

    2. 二叉树的性质

    • 4个性质 

    3. 二叉树与树、森林之间的转换(一一对应)

    • 森林、树转二叉树
      • 加水平线
      • 删连线
      • 旋转45度 

     

    • 二叉树还原为森林、树
      • 删右孩子连线  
      • 与双亲结点连线  

     

    4. 二叉树存储结构

    • 顺序存储结构:
      • 存储在数组  
      • 树结点编号,按照编号存储在对应的下标,空分支用#补齐
    • 链式存储结构:左子针域、值域、右子针域
  • 相关阅读:
    几种常见的Map的区别
    BlockingQueue详解
    Android开发过程中内存泄露检测
    Android studio 技巧设置(持续更新中)
    Android Support兼容包详解
    单例模式的饿汉式为什么需要双重锁定
    View分析
    Activity的启动流程分析
    LeetCode第十四题-字符串数组中最长的共同前缀
    LeetCode第十三题-将罗马数字转化为数字
  • 原文地址:https://www.cnblogs.com/gzhu-lkun/p/5979313.html
Copyright © 2020-2023  润新知