C++自定义函数实现完全二叉树创建
4星 · 超过85%的资源 需积分: 14 184 浏览量
更新于2024-09-21
2
收藏 1KB TXT 举报
本篇代码是用C++实现的按层次建立完全二叉树的程序。完全二叉树是一种特殊的二叉树结构,其中除了最后一层外,所有层级的节点都尽可能地填充,且最后一层的所有节点都集中在左边。这里的实现采用了队列数据结构,按照层次顺序插入节点。
首先,定义了一个`btree`结构体,包含一个字符数据`data`以及两个指向左右子节点的指针`lchild`和`rchild`。还定义了两个全局变量`front`和`rear`分别表示队列的头和尾,初始化为1和0。另外,`max`和`null`分别代表最大节点数量和空节点的标识。
函数`CREATREE()`是整个程序的核心部分。它首先提示用户输入字符,直到遇到'@'为止,每输入一个字符,就创建一个新的`btree`对象,并将其添加到队列`Q`中。当新节点加入时,会根据当前节点数量的奇偶性决定将其放在左子树还是右子树。如果后继节点是奇数,新节点将被插入到当前节点的左子树;如果是偶数,则插入右子树。这样,保证了每层节点数量对半分配,形成完全二叉树的特性。
当输入到达'#'时,跳出循环,返回根节点`root`。`main()`函数则调用`CREATREE()`函数来创建整棵树,并将结果存储在`tree`变量中。这个程序的目的是通过控制节点的插入顺序,确保按照层次关系构建出完全二叉树的结构。
通过这段代码,读者可以学习到如何利用队列的数据结构实现完全二叉树的插入,理解节点层次插入算法的关键在于判断节点的位置取决于队列的索引是否为奇数。此外,该代码展示了C++中结构体、数组、指针以及基本的内存管理(malloc)等概念的应用。
2021-01-01 上传
2012-11-01 上传
2009-12-23 上传
2022-12-15 上传
2024-06-16 上传
2023-06-09 上传
2023-06-09 上传
2023-06-07 上传
wind4905564
- 粉丝: 29
- 资源: 4
最新资源
- node-selenium-driver-filedetector:具有文件检测器绑定的节点网络驱动程序
- spring-boot-graphql
- remixed2recipes
- 星级酒店预定主题响应式模板
- 企业门户网站管理系统,包括前台展示、后台管理、后端服务(Node.js、Koa、sequelize、MySQL),前.zip
- cordova-plugin-mmedia:千禧一代媒体广告的CordovaPhoneGap
- Lita:公司聊天室的机器人伴侣-开源
- eslint-plugin-jsx-extras:一组Eslint插件,用于基于应用程序的特定JSX规则
- bls_custom:粘在一起将Blocky Survival Minetest服务器固定在一起
- 进口玻璃磨边机PLC程序.rar
- Schizo-crx插件
- angular-starter:基于angularJS框架的全初始化前端项目
- javascript-dom-exercises-2.3
- TheGrid:按键游戏
- autotrader-scraper:用于刮擦自动交易器网站以获取汽车图像的工具。 我用它们来训练神经网络
- 库:通用功能的声明。 存储库的内容不属于GNU C库