[数据结构4.4]树的存储结构01

双亲表示法

采用一组连续的存储空间来存储每个结点,同时在每个结点中增设一个伪指针,指示双亲结点在数组中的位置。根结点的下标为0,其伪指针域为-1。

#defien MAX_TREE_SIZE 100

typedef struct{

        ElemType data;

        int parent;

}PTNode;

typedef struct{

        PTNode nodes[MAX_TREE_SIZE];

        int n;

}PTree;


双亲表示法




孩子表示法

将每个结点的孩子结点都用单链表连接起来形成一个线性结构,n个结点具有n个孩子链表

#defien MAX_TREE_SIZE 100

typedef struct{

        struct CNode *next;

        int child;

}CNode;

typedef struct{

        ElemType data;

        struct CNode *next;

}PNode;

typedef struct{

        PNode nodes[MAX_TREE_SIZE 100];

        int n;

}CTree;


孩子表示法




孩子兄弟表示法

以二叉链表作为树的存储结构,又称二叉树表示法。


结构示意图


typedef struct CSNode{

        ElemType data;

        struct CSNode *firstchild,*nextsibling;

}CSNode,CSTree;


孩子兄弟表示法




三种表达方式的优缺点


优缺点说明

你可能感兴趣的:([数据结构4.4]树的存储结构01)