数据布局(5.4_1)——树的存储布局

打印 上一主题 下一主题

主题 1044|帖子 1044|积分 3132

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
树的逻辑布局

双亲表现法(次序存储)


每个结点中生存指向双亲的“指针”
  1. #define MAX_TREE_SIZE 100//树中最多结点
  2. typedef struct {//树的结点定义
  3.     int data;//数据元素
  4.     int parent;//双亲位置域
  5. }PTNode;
  6. typedef struct {//树的类型定义
  7.     PTNode nodes[MAX_TREE_SIZE];//双亲表示
  8.         int n;//结点数
  9. }PTree;
复制代码

增长结点操纵 

新增数据元素无需按逻辑上的序次存储,之家在上一个结点后添加新结点,并记录双亲结点
 
删除叶结点操纵 

1、删除结点数据域                           

2、将尾部数据移动至删除结点位置填充空缺

删除非叶结点操纵  

探求其双亲结点相同的结点

孩子表现法 (次序+链式存储)

次序存储各个节点,每个结点中生存孩子的链表头指针
  1. #define MAX_TREE_SIZE 100//树中最多结点
  2. struct CTNode {
  3.     int child;//孩子在结点数组中的位置
  4.     struct CTNode* next;//下一个孩子
  5. };
  6. typedef struct {
  7.     int data;
  8.     struct  CTNode* firstChild;//第一个孩子
  9. }CTBox;
  10. typedef struct {
  11.     CTBox nodes[MAX_TREE_SIZE];
  12.     int n, r;//结点数和根的位置
  13. }CTree;
复制代码

孩子兄弟表现法(链式存储) 

 

  1. /树的存储——孩子兄弟表示法
  2. typedef struct CSNode {
  3.     int data;
  4.     struct CSNode* firsitchild, * nextsilbling;//第一个孩子和右兄弟指针
  5. }CSNode,*CSTree;
  6. int main() {
  7.     return 0;
  8. }
复制代码
树和二叉树的转化:

使用孩子兄弟表现法

 
丛林和二叉树的转化 

丛林—>二叉树


二叉树—>丛林

 
总结: 



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

络腮胡菲菲

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表