树的存储结构



#define MAX_TREE_SIZE 100

typedef int ElemType;

typedef struct PTNode{  //每个节点的信息存储

  ElemType data; //节点数据

  int parent;  //双亲位置,存放数组的下标

}PTNode;

typedef struct{  //整个树的信息存储

  PTNode nodes[MAX_TREE_SIZE];

  int r; //根的位置  ,数组的第一个位置

  int n;  //节点数目

}PTree;



但如果要想知道某节点的子节点,只能遍历整个树结构

改进:







孩子双亲表示法:


#define MAX_TREE_SIZE 100

#define char ElemType

//孩子节点

typedef struct CTNode{

  int child;  //孩子节点的下标

  struct CTNode *next;    //指向下一个孩子节点的指针

}*ChildPtr;

//表头结构


typedef struct {

  ElemType data;  //存放在树中的节点的数据(A,B,C...)

  int parent;  //存放双亲的下标 (-1)

  ChildPtr firstchild;  //指向第一个孩子的指针

}CTBox;

//树结构 

typedef struct{

  CTBox nodes[MAX_TREE_SIZE];  //节点数组  //表示多个表头

  int r,n;

}CTree;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值