构建二叉树并计算度为2的节点数
需积分: 49 64 浏览量
更新于2024-09-12
4
收藏 717B TXT 举报
"该代码是用C++编写的,用于根据扩展二叉树的前序遍历序列构建二叉树,并计算其中度为2的结点数量。它定义了一个`Node`结构体来表示二叉树的结点,包含一个字符数据字段以及左右子结点的指针。同时,有一个`Tree`类,包含了创建二叉树、计算度为2的结点个数和打印结果的方法。"
在这段代码中,主要涉及了以下几个知识点:
1. **二叉树**:二叉树是一种每个结点最多有两个子结点的树形数据结构。这里的二叉树采用二叉链表(也称链式存储)的方式表示,每个结点包含一个字符数据和两个指向子结点的指针。
2. **扩展二叉树的前序遍历**:前序遍历的顺序是根结点 -> 左子树 -> 右子树。在输入的序列中,用'#'字符表示空结点。
3. **链式存储结构**:通过`Node`结构体,我们使用指针将结点连接起来,形成二叉链表。每个`Node`都有一个左子结点`lchild`和一个右子结点`rchild`的指针。
4. **递归**:`Creat()`函数采用递归方式根据前序遍历序列创建二叉树。首先读取一个字符,如果字符是'#',则返回空指针;否则,创建一个新的结点,然后递归地创建左子树和右子树。
5. **类与对象**:`Tree`类包含了构建二叉树和计算度为2结点的方法。`root`是二叉树的根结点,`sum`是静态成员变量,用于累计度为2的结点数。
6. **方法实现**:
- `Creat()`:递归函数,根据输入的前序遍历序列构建二叉树。
- `Num()`:遍历二叉树,计算度为2的结点个数。如果当前结点的左右子结点都存在,`sum`加一,然后递归地遍历左右子树。
- `Print()`:输出`sum`,即度为2的结点个数。
7. **主函数`main()`**:读取输入的测试用例数量`n`,对每个测试用例,创建`Tree`对象,调用`Num()`计算度为2的结点个数,并打印结果。
这段代码提供了一个完整且有效的解决方案,能够根据输入的扩展二叉树前序遍历序列构建二叉树,并统计其中度为2的结点数。
jingtingbai
- 粉丝: 1
- 资源: 2
最新资源
- video_cut.rar
- avrgirl-arduino:一个NodeJS库,用于将编译的草图文件刷新到Arduino微控制器板
- 绿色极简风格通用商业计划书PPT模板
- 非常酷的3D立体图片相册展示代码
- Algorithm-Nonlinear-Optimization-Algorithms.zip
- maquina_turing:实施Turing uma的Turíque的instruções,使用Usaárioe gera fitas desaída的运动
- bclm:macOS命令行实用程序以限制最大电池电量
- 行业分类-设备装置-3D打印平台自动调平结构及3D打印机.zip
- springboothello
- Android-LogUtils.zip
- Android皮肤支持:Android皮肤支持是一种易于使用的动态皮肤框架,可用于Android,仅需一行代码即可对其进行集成。 Android换肤框架,极低的学习成本,极好的用户体验。 “一行”代码就可以实现换肤,你值得拥有!
- nosql
- 用jquery制作设置浏览器水平横行滚动条样式产品
- Python文字识别之tesseract-ocr安装包和中文语言包chi_sim.traineddata下载
- kashtin:小型私人图片寄存网站
- 团队与货币符号背景的商业融资PPT模板