zoukankan      html  css  js  c++  java
  • c语言数据结构学习心得——树

    一对多的树型结构,有且只有一个特定的根结点。

    结点的度:结点拥有子树的数量{

                                           度为0:叶子结点/终端结点。

                                           度不为0:非终端结点/分支结点(除去根结点其它称为内部结点)。}

    树的度:树中所有结点的度数的最大值。

    树的层次:根为第一层,以此类推。

    结点的深度:根结点开始,自顶向下累加。

    结点的高度:叶结点开始,自底向上累加。

    树的高度(深度):树中结点的最大层数。

    结点关系:

    祖先结点:根结点到该点的唯一路径上的任意结点。

    子孙结点

    双亲结点:根结点到该点的唯一路径上的最近结点。

    孩子结点

    兄弟结点:有相同双亲结点的结点。

    树中的数学关系:

    1.树中的结点数等于所有结点的度数加1。

    2.度为m的树中第i层上最多有mi-1个结点。

    3.高度为h的m叉树至多有(mn-1)/(m-1)个结点。

    4.具有n个结点的m叉树的最小高度为[logm(n(m-1)+1)]

    树的存储结构

    顺序存储结构

    双亲表示法:用一组连续的存储空间存储树的结点,同时在每个结点中,用一个变量存储该结点双亲结点在数组中的位置。typedef char ElemType;

    typedef struct TNode{
         ElemType data;           //结点数据
         int parent;              //该结点双亲在数组的下标
    }TNode;                       //结点数据类型

    #define MaxSize 100
    typedef struct{
    TNode nodes[MaxSize]; //结点数组
    int n; //结点数量
    }Tree; //树的双亲表示结构

    链式存储结构

    孩子表示法:把每个结点的孩子结点排列起来存储成1个单链表,所以n个结点有n个链表;

                          叶子结点链表为空;

                          n个单链表的头指针又存储在一个顺序表(数组)中。

    孩子链表结点代码:

    typedef char ElemType;
    typedef struct CNode{
       int child;         //该孩子在表头的数组下标
       struct CNode *next;//指向该结点的下一个孩子结点
    }CNode,*child         //孩子结点数据类型

    每个孩子链表的表头结点(存在数组中):

    typedef struct{
        ElemType data;    //结点数据域
        child first child;//指向该结点的第一个孩子结点
    }TNode;               //孩子结点的数据类型
    #define MaxSize 100
    typedef struct{
         TNode nodes[MaxSize];//结点数据域
         int n;               //树中结点数量
    }Tree;                    //树的孩子表示结构

    孩子兄弟表示法:存储孩子结点和兄弟结点。

    typedef char ElemType;
    typedef struct CSNode{
       ElemType data;                   //该结点数据域
       struct CSNode *firsrchild,*right;//指向该结点的第一个孩子结点和该结点的右兄弟结点
    }CSNode                             //孩子兄弟结点数据类型
  • 相关阅读:
    等保测评(一)
    一个基于RNN的实体抽取工具
    如何画UML类图
    mysql存储过程整理
    记一次mysql事务未提交导致锁未释放的问题
    开启·元宇宙·区块链金融
    Nacos启动报错:[db-load-error]load jdbc.properties error
    使用Bazel编译TypeScript
    Win10上Docker无法正常启动 出现install WSL2 kernel update的情况
    VSCode调试PHP环境配置 phpstudy vscode xdebug调试
  • 原文地址:https://www.cnblogs.com/suprechen/p/10602133.html
Copyright © 2011-2022 走看看