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 

  • 相关阅读:
    【转】C# 注册表简单操作
    [转]VC++之随父窗口变化调整控件大小/位置
    [转]vc 汉字汉语拼音首字母如何获取
    [转]浅析ActiveX控件的CAB压缩
    [转]VC6.0中使用MFC开发ActiveX及简单验证
    ElasticSearch增加索引字段
    单词缩写
    linux命令
    使用PR插件Twixtor Pro对视频补帧
    Linux创建脚本服务
  • 原文地址:https://www.cnblogs.com/wy0526/p/11804187.html
Copyright © 2011-2022 走看看