zoukankan      html  css  js  c++  java
  • 树的存储结构以及遍历

    一、树的存储结构

    树的示例

    ——————顺序存储(一维数组)——————

    1.双亲表示法:

     1 #define MaxSize 100     //假设树中最多有100个节点 
     2 //1.定义树节点的数据类型,假设为char型 
     3 typedef char DataType;    
     4 typedef struct{
     5     DataType data;      //树节点的数据信息 
     6     int parent;            //该节点的双亲在数组中的下标 
     7 }PNode;
     8 //2.定义双亲表示法存储结构 
     9 typedef struct{            
    10     PNode tree[MaxSize];
    11     int treeNum;        //树节点的个数 
    12 }PTree;

    ————————链式存储——————

    2.孩子表示法:

     1 #define MaxSize 100;              //假设树中最多有100个节点 
     2 typedef char DataType ;            //定义树节点的数据类型,假设为char型 
     3 //孩子节点 
     4 typedef struct ChildNode{
     5     int child;                    //该节点在表头数组中的下标 
     6     struct ChildNode * Next;    
     7 }ChildNode;
     8 //表头节点 
     9 typedef struct{
    10     DataType * data;            //树节点的数据信息
    11     ChildNode * first;            //指向孩子链表的头指针 
    12 }TreeNode;
    13 //表头数组 --定义孩子表示法的存储结构 
    14 typedef struct{
    15     TreeNode tree [Maxsize];
    16     int treeNum;                //树节点的个数 
    17 };

    3.孩子兄弟(二叉链表)表示法

    1 typedef char DataType;                        //定义树节点的数据类型,假设为char型 
    2 typedef struct CSNode{                         //定义节点结构 
    3     DataType data;
    4     struct CSNode * firstchild,*rightsib;
    5 }CSNode;
    6 CSNode * root;                                 //定义根指针 

     二、树的遍历

     ———深度优先遍历———

    1.前序遍历:  A B D E I F C G H

    2.后序遍历:  D I E F B G H C A 

    ———广度优先遍历———

    3.层序遍历: A B C D E F G H 

  • 相关阅读:
    数据库-数据约束
    数据库-表2
    数据库-表
    MySQL入门
    记一次stm8l程序跑飞
    nRF24L01P的ShockBurst与Enhance ShockBurst
    电路板工艺中的NPTH和PTH
    nRF24L01P数据传输速率
    STM32F030-UART1_DMA使用提示
    Altium Designer 复制报错-奇怪的问题解决办法
  • 原文地址:https://www.cnblogs.com/wy0526/p/11804187.html
Copyright © 2011-2022 走看看