欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 数据结构(5.4_1)——树的存储结构

数据结构(5.4_1)——树的存储结构

2025/10/14 11:46:59 来源:https://blog.csdn.net/m0_65240792/article/details/140868883  浏览:    关键词:数据结构(5.4_1)——树的存储结构

树的逻辑结构

双亲表示法(顺序存储)

每个结点中保存指向双亲的“指针”

#define MAX_TREE_SIZE 100//树中最多结点typedef struct {//树的结点定义int data;//数据元素int parent;//双亲位置域
}PTNode;
typedef struct {//树的类型定义PTNode nodes[MAX_TREE_SIZE];//双亲表示int n;//结点数
}PTree;

增加结点操作 

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

 

删除叶结点操作 

1、删除结点数据域                           

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

删除非叶结点操作  

寻找其双亲结点相同的结点

孩子表示法 (顺序+链式存储)

顺序存储各个节点,每个结点中保存孩子的链表头指针

#define MAX_TREE_SIZE 100//树中最多结点struct CTNode {int child;//孩子在结点数组中的位置struct CTNode* next;//下一个孩子
};
typedef struct {int data;struct  CTNode* firstChild;//第一个孩子
}CTBox;
typedef struct {CTBox nodes[MAX_TREE_SIZE];int n, r;//结点数和根的位置
}CTree;

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

 

/树的存储——孩子兄弟表示法
typedef struct CSNode {int data;struct CSNode* firsitchild, * nextsilbling;//第一个孩子和右兄弟指针
}CSNode,*CSTree;
int main() {return 0;
}

树和二叉树的转化:

使用孩子兄弟表示法

 

森林和二叉树的转化 

森林—>二叉树

二叉树—>森林

 

总结: 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词