当前位置: 首页 > news >正文

二叉树实现

结构体创建

核心逻辑
定义了二叉树的基本结构 TreeNode,每个节点包含一个字符型数据 data,以及指向左右子树的指针 leftright

typedef char DataType;typedef struct BiTNode 
{DataType data;struct BiTNode *left;struct BiTNode *right;
} TreeNode;
树的创建(前序构造)

核心逻辑
利用前序遍历方式,根据字符数组构造二叉树。遇到 # 表示该节点为空(空子树)。递归构造左右子树。

DataType data[] = "Abd#g###ce#h##fi###";
int ind = 0;void CreatTree(TreeNode **tree) 
{char c = data[ind++];if (c == '#') {*tree = NULL;return;} else {*tree = malloc(sizeof(TreeNode));if (*tree == NULL) {printf("malloc tree error\n");return;}(*tree)->data = c;CreatTree(&(*tree)->left);CreatTree(&(*tree)->right);}
}
三种遍历函数

核心逻辑

        前序遍历(根-左-右):先访问当前节点,再访问左子树和右子树。

        中序遍历(左-根-右):先访问左子树,再访问当前节点,最后访问右子树。

        后序遍历(左-右-根):先访问左子树和右子树,最后访问当前节点。

void PreOrderTraverse(TreeNode *tree) 
{if (tree == NULL) return;printf("%c", tree->data);PreOrderTraverse(tree->left);PreOrderTraverse(tree->right);
}void InoderderTraverse(TreeNode *tree) 
{if (tree == NULL) return;InoderderTraverse(tree->left);printf("%c", tree->data);InoderderTraverse(tree->right);
}void PosederTraverse(TreeNode *tree) 
{if (tree == NULL) return;PosederTraverse(tree->left);PosederTraverse(tree->right);printf("%c", tree->data);
}
层序遍历函数 ShowTree

核心逻辑

        通过辅助队列 lqe 进行层序遍历,从上至下、从左至右访问每一个节点。队列中维护每层的节点顺序,每次出队一个节点,就将其左右子节点(如果存在)入队,直到队列为空

模块函数名功能说明
节点结构TreeNode定义二叉树节点数据结构
树构建CreatTree递归前序方式构建二叉树(支持空节点)
前序遍历PreOrderTraverse根 -> 左 -> 右
中序遍历InoderderTraverse左 -> 根 -> 右
后序遍历PosederTraverse左 -> 右 -> 根
层序遍历ShowTree借助队列按层输出节点内容
主程序入口main构建树、调用遍历函数测试
http://www.dtcms.com/a/321586.html

相关文章:

  • 【科研绘图系列】R语言绘制气泡图
  • [LLM 应用评估] 提示词四大要素 | 评估样本_单次交互快照 | 数据集 | Hugging Face集成
  • 杰理ac791 [Info]: [LL_S]Recv - LL_CHANNEL_MAP_REQ
  • JAVA基础-集合框架
  • 特征值和特征向量的直觉
  • 自适应反步控制:理论与设计
  • 网络基础浅谈
  • NVME M.2 SSD固态硬盘掉盘:也可能是主板出问题
  • 【Layui】调整 Layui 整体样式大小的方法
  • 【Lua】XLua一键构建工具
  • 关于 Rust 异步底层实现中 waker 的猜测
  • Xiphos 配备 GTH 计算机模块的 Q8J 低 SWaP
  • 基于LLM的Chat应用测试方法探索:系统化评估与持续优化
  • python之注册机制总结
  • 等保测评-Nginx中间件
  • 强光干扰下误报率↓82%!陌讯多模态融合算法在高空抛物检测的实战优化
  • 微软发布Project Ire项目:可自主检测恶意软件的人工智能系统
  • docker下载安装和使用(Hyper-V方式)
  • 信息系统项目范围管理高频题库精讲
  • windows拉取镜像失败
  • 双驱智造革命:物理方程+工业数据训练,突破增材制造温度场预测瓶颈
  • CETOL 6σ 帮助提升活检器械精度并降低制造成本
  • Horse3D引擎研发记录(二):基于QtOpenGL使用仿Three.js的BufferAttribute结构重构三角形绘制
  • 复数的复平面加减乘除运算与在极坐标中的运算对应关系
  • 算法训练之栈
  • provide 和 inject 最佳实践
  • 多任务实时进度监控系统:基于ABP vNext与SignalR的架构实践
  • [激光原理与应用-175]:测量仪器 - 频谱型 - 拉曼光谱仪的工作原理、内部组成、核心芯片、核心算法
  • 项目一系列-第3章 若依框架入门
  • Java中的方法引用操作符(::)详解与实战应用