二叉树的链式存储
- //二叉树的链式存储
- struct ElemType{
- int value;
- };
- typedef struct BiTNode{
- ElemType data;
- struct BiTNode *lchild,*rchild;
- }BiTNode,*BiTree;
- //定义一颗空树
- BiTree root = NULL;
- //插入根结点
- root = (BiTree)malloc(sizeof(BiTNode));
- root->data={1};
- root->lchild = NULL;
- root->rchild = NULL;
- //插入新结点
- BiTNode * p = (BiTNode *)malloc(sizeof(BiTNode));
- p->data={2};
- p->lchild = NULL;
- p->rchild = NULL;
- root->lchild = p;//作为根结点的左孩子
复制代码 其中,struct ElemType 是一个结构体范例,可以包罗多种不同范例的数据。在现实应用中,ElemType 的界说可以根据具体需求举行扩展,包罗多个字段,以存储更复杂的信息。
- struct ElemType{
- int value;
- };
复制代码
示例代码:插入一个新结点
假设我们要插入一个新结点,其值为 2,姓名为 "Alice",年事为 20,可以如许实现:
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct ElemType {
- int value;
- char name[50];
- int age;
- };
- typedef struct BiTNode {
- ElemType data;
- struct BiTNode *lchild, *rchild;
- } BiTNode, *BiTree;
- int main() {
- // 定义一颗空树
- BiTree root = NULL;
- // 插入根结点
- root = (BiTree)malloc(sizeof(BiTNode));
- if (root == NULL) {
- printf("Memory allocation failed.\n");
- return -1;
- }
- root->data.value = 1;
- strcpy(root->data.name, "Root");
- root->data.age = 0;
- root->lchild = NULL;
- root->rchild = NULL;
- // 插入新结点
- BiTNode *p = (BiTNode *)malloc(sizeof(BiTNode));
- if (p == NULL) {
- printf("Memory allocation failed.\n");
- return -1;
- }
- p->data.value = 2;
- strcpy(p->data.name, "Alice");
- p->data.age = 20;
- p->lchild = NULL;
- p->rchild = NULL;
- root->lchild = p; // 作为根结点的左孩子
- // 打印根结点和左子结点的信息
- printf("Root: value=%d, name=%s, age=%d\n", root->data.value, root->data.name, root->data.age);
- printf("Left child: value=%d, name=%s, age=%d\n", p->data.value, p->data.name, p->data.age);
- // 释放内存
- free(p);
- free(root);
- return 0;
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|