数据结构二叉树的链式存储结构(C语言代码)

devtools/2024/12/22 21:25:46/
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdlib.h>
#include<stdio.h>
#include<assert.h>
typedef struct TreeNode
{int data;struct TreeNode* left;struct TreeNode* right;
}TreeNode;
//创建链表
TreeNode* createNode(int data)
{TreeNode* newnode = (TreeNode*)malloc(sizeof(TreeNode));if (newnode== NULL){perror("error");exit(1);}newnode->data = data;newnode->left = NULL;newnode->right = NULL;return newnode;
}
//插入操作
TreeNode* insertNode(TreeNode* root, int data)
{if (root == NULL){return createNode(data);}if (data < root->data){root->left = insertNode(root->left, data);}else if (data > root->data){root->right = insertNode(root->right, data);}return root;
}
//遍历   中序
void inorderTraversal(TreeNode* root)
{if (root != NULL){inorderTraversal(root->left);printf("%d ", root->data);inorderTraversal(root->right);}
}
//释放空间
void freeNode(TreeNode* root)
{if (root == NULL){return;}free(root->left);free(root->right);free(root);
}
int main()
{TreeNode* root = NULL;root = insertNode(root, 50);insertNode(root, 30);insertNode(root, 20);insertNode(root, 40);insertNode(root, 70);insertNode(root, 60);insertNode(root, 80);printf("中序遍历如下\n");inorderTraversal(root);printf("\n");freeNode(root);printf("释放空间成功\n");return 0;
}


http://www.ppmy.cn/devtools/119793.html

相关文章

总结C/C++中内存区域划分

目录 1.C/C程序内存分配主要的几个区域&#xff1a; 2.内存分布图 1.C/C程序内存分配主要的几个区域&#xff1a; 1、栈区 2、堆区 3、数据段&#xff08;静态区&#xff09; 4.代码段 2.内存分布图 如图&#xff1a; static修饰静态变量成员——放在静态区 int globalVar 是…

从一到无穷大 #36 Lindorm 宽表:东西互联,南北互联,AI一体

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言索引列存索引全文索引向量索引二级索引 AI赋能时序宽表 LTS&#xff08;Lindorm …

Linux2.6* 内核默认支持的文件系统

Linux2.6* 内核默认支持的文件系统 Btrfs是一种具有先进特性的写时复制文件系统。支持多种高级功能&#xff0c;如快照、透明压缩、数据校验和自我修复等&#xff0c;适用于大规模存储系统和数据可靠性要求较高的场景。JFSJournaled File System日志文件系统&#xff0c;具有高…

leetcode-链表篇3

leetcode-61 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[4,5,1,2,3]示例 2&#xff1a; 输入&#xff1a;head [0,1,2], k 4 输出&#x…

RocketMQTemplate 解析:简化与 RocketMQ 消息系统的交互

org.apache.rocketmq.spring.core.RocketMQTemplate 是 RocketMQ 的 Spring 集成库中的一个重要类。它用于在 Spring 框架中简化与 RocketMQ 消息系统的交互&#xff0c;支持消息的发送、接收、事务性操作等。 1. RocketMQ 的背景介绍 Apache RocketMQ 是一个分布式消息队列系…

合成孔径雷达海上石油泄露分割数据集,共8000对图像,sentinel和palsar传感器,共400MB

合成孔径雷达海上石油泄露分割数据集&#xff0c;共8000对图像&#xff0c;sentinel和palsar传感器&#xff0c;共400MB 名称 合成孔径雷达&#xff08;SAR&#xff09;海上石油泄露分割数据集 规模 图像对数&#xff1a;8000对图像传感器类型&#xff1a; Sentinel-1 SAR 传…

探索Llama 3.1:开源模型的本地部署与创新应用实践

文章目录 1 Llama 3.1模型的突破性进展2 Llama 3.1模型在业务场景中的实践案例3 使用教程4 Llama 3.1在客户服务中的运用 1 Llama 3.1模型的突破性进展 在数字化转型的浪潮中&#xff0c;大型语言模型&#xff08;LLM&#xff09;以其卓越的处理能力和广泛的应用潜力&#xff…

【STM32】【rt-thread】C函数调用

C函数调用 一、基本概念二、函数调用2.1 函数调用2.2 参数传递2.3 栈帧创建2.3.1 保存旧FP2.3.2 更新FP和SP2.3.3 保存调用者状态 三、函数执行3.1 局部变量分配3.2 执行代码 四、返回过程4.1 返回值4.2 恢复栈帧4.2.1 恢复FP4.2.2 恢复SP 4.3 返回地址五、继续执行六、参考 一…