数据结构第一轮复习--第五章树、二叉树(包罗课程、作业代码) ...

打印 上一主题 下一主题

主题 1524|帖子 1524|积分 4572

二叉树的链式存储

  1. //二叉树的链式存储
  2. struct ElemType{
  3.         int value;
  4. };
  5. typedef struct BiTNode{
  6.         ElemType data;
  7.         struct BiTNode *lchild,*rchild;
  8. }BiTNode,*BiTree;
  9. //定义一颗空树
  10. BiTree root = NULL;
  11. //插入根结点
  12. root = (BiTree)malloc(sizeof(BiTNode));
  13. root->data={1};
  14. root->lchild = NULL;
  15. root->rchild = NULL;
  16. //插入新结点
  17. BiTNode * p = (BiTNode *)malloc(sizeof(BiTNode));
  18. p->data={2};
  19. p->lchild = NULL;
  20. p->rchild = NULL;
  21. root->lchild = p;//作为根结点的左孩子
复制代码
其中,struct ElemType 是一个结构体范例,可以包罗多种不同范例的数据。在现实应用中,ElemType 的界说可以根据具体需求举行扩展,包罗多个字段,以存储更复杂的信息。
  1. struct ElemType{
  2.     int value;
  3. };
复制代码


示例代码:插入一个新结点

假设我们要插入一个新结点,其值为 2,姓名为 "Alice",年事为 20,可以如许实现:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. struct ElemType {
  5.     int value;
  6.     char name[50];
  7.     int age;
  8. };
  9. typedef struct BiTNode {
  10.     ElemType data;
  11.     struct BiTNode *lchild, *rchild;
  12. } BiTNode, *BiTree;
  13. int main() {
  14.     // 定义一颗空树
  15.     BiTree root = NULL;
  16.     // 插入根结点
  17.     root = (BiTree)malloc(sizeof(BiTNode));
  18.     if (root == NULL) {
  19.         printf("Memory allocation failed.\n");
  20.         return -1;
  21.     }
  22.     root->data.value = 1;
  23.     strcpy(root->data.name, "Root");
  24.     root->data.age = 0;
  25.     root->lchild = NULL;
  26.     root->rchild = NULL;
  27.     // 插入新结点
  28.     BiTNode *p = (BiTNode *)malloc(sizeof(BiTNode));
  29.     if (p == NULL) {
  30.         printf("Memory allocation failed.\n");
  31.         return -1;
  32.     }
  33.     p->data.value = 2;
  34.     strcpy(p->data.name, "Alice");
  35.     p->data.age = 20;
  36.     p->lchild = NULL;
  37.     p->rchild = NULL;
  38.     root->lchild = p; // 作为根结点的左孩子
  39.     // 打印根结点和左子结点的信息
  40.     printf("Root: value=%d, name=%s, age=%d\n", root->data.value, root->data.name, root->data.age);
  41.     printf("Left child: value=%d, name=%s, age=%d\n", p->data.value, p->data.name, p->data.age);
  42.     // 释放内存
  43.     free(p);
  44.     free(root);
  45.     return 0;
  46. }
复制代码


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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

八卦阵

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