• 数据结构 (树,图)




    数据结构

    二叉树
    定义,最多有两个子节点
    特点,每层节点数,总共节点数。
    特殊的二叉树,满,完全,非完全
    节点编号,根节点为1,完全二叉树特性
    二叉树数组存储
    二叉树链式存储结构
    typedef struct node{
        int data;
        struct node * pLeft;
        struct node * pRight;
    };

    二叉树遍历,基于链式存储结构
    递归遍历,按照访问根节点的顺序分3种:先,中,后
    非递归遍历,
    先跟遍历:先访问更节点,然后右节点入栈,左节点入栈,出栈一个,再右节点入栈,左节点入栈,这样循环
    中根遍历,左子节点入栈,为空时开始出栈,访问出栈节点,按照递推规则访问右子节点。
    层序遍历,根节点入队列,访问队列,在把节点的左右子节点入队列。

    最优二叉树
    定义:带权路径长度最小。带权路径长度是所有叶子节点的带权路径之和。
    构造哈夫曼树:从n个叶子节点开始,构造一颗哈夫曼树。
    存储结构:
    typedef struct node{
        char ch;
        int parentIndex;
        int weight;
        int leftChild;
        int rightchild;
    }HuffmanTree[2*n];

    用数组结构来存放,前半部分存放叶子节点,后半部分存放中间节点。构造时根据父节点是否为空开判断这各节点是否已经被使用。

    树和森林
    几种表示方法
    双亲,孩子,孩子兄弟


    定义:点与连接点的边组成的集合。
    分类:无向图,有向图,完全图
    概念:度,出度,入度,路径
    存储方式:
    邻接矩阵
    typedef struct node{
    int index;
    struct arc *pArc;
    }Node[n];

    typedef struct arc{
        int weight;
        int destNode;
        struct arc *pNextArc;
    };
    图的遍历,要有一个数组保存节点是否访问状态。
    深度采用递归算法。
    广度采用队列,类似树的层序遍历

    最小生成树
    普利姆算法
    克鲁斯卡尔算法

    AOV网络
    拓扑排序:选入度为0的点,从图中删除这些点以及与之相邻的边,重复这个过程。
    两种结果:可以选出所有的点,不能选出所有的点(存在回路的情况)
    DAG图:不存在回路的图
    AOE网络,带权
    关键路径与关键活动




  • 相关阅读:
    Idea配置注释
    mysql省市区数据表
    php实现汉字转拼音的类
    git push时如果不再弹出用户和密码的输入提示框该怎么办
    .gitignore 忽略特殊文件无效
    vmware中CentOS7网络设置教程详解
    Tp5中配置多模块开发
    安装tp6 并使用多应用模式
    ldf和mdf文件怎么还原到sqlserver数据库
    git本地仓库与远程仓库建立连接。
  • 原文地址:https://www.cnblogs.com/mingzhang/p/7569764.html
Copyright © 2020-2023  润新知