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

二叉树的链式存储

复制代码
//二叉树的链式存储
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;
}
相关推荐
Elaine3361 小时前
数据结构与算法-程序
数据结构·python·算法·计算机基础·编程基础
Logic1013 小时前
C语言/数据结构位运算题解:异或XOR找出游戏速通中的“独特初始能量值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Bruce_Liuxiaowei5 小时前
Python 字典默认值完全指南:从 KeyError 到 defaultdict
开发语言·数据结构·python·字典
All for pursuit.8 小时前
【二叉树-10】114.二叉树展开为链表
数据结构·c++·算法·leetcode·链表
心中有你021411 小时前
C语言埃氏筛法(素数筛选)
c语言·数据结构·算法
释厄62313 小时前
多黑洞具现论·物理/生物/金融三域显化·虚拟宇宙黑洞·奇点=0 圆圈
开发语言·数据结构·人工智能·程序人生·安全威胁分析
库玛西20 小时前
攻克 408 数据结构:图论基石深度拆解(数学极值推演 + 存储内存剖析 + BFS/DFS 双核模板)
数据结构·算法·深度优先·广度优先·图搜索算法
m0_547486666 天前
《数据结构教程》全套 PPT课件2026
数据结构
tryxr7 天前
矩阵的几种基础变换
java·数据结构·算法·矩阵
mmmmath_37 天前
LeetCode.028.找出字符串中第一个匹配项的
数据结构·算法·leetcode