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

二叉树的镜像--c++【做题记录】

【问题描述】

给定扩展二叉树的前序序列,构建二叉树。

求这课二叉树的镜像,并输出其前序遍历序列。

【输入形式】

输入扩展二叉树的前序序列。

【输出形式】

输出镜像二叉树的前序遍历序列。

【样例输入】

ab##cd##e##

【样例输出】

镜像后二叉树的前序遍历序列是:acedb

【样例说明】

上述输入对应以下结构的二叉树:

a

/
b c

  /
d e

二叉树的镜像如下图

a

/
c b

/

e d

【代码】

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
const int MAX = 1000;
struct BiNode
{char data;//数据域BiNode* lchild, * rchild;//左右儿子指针
};class BiTree {
private:BiNode* root;
public:BiTree() { root = creat(root); }~BiTree() {release(root);}BiNode* getRoot() { return root; }BiNode* creat(BiNode* bt); //构造函数调用void release(BiNode* bt);  //析构函数调用,释放树的存储空间void Mirror(BiNode* pRoot);//镜像void preOrder(BiNode* bt);//前序输出};
BiNode* BiTree::creat(BiNode* bt)
{char ch;cin >> ch;if (ch == '#')bt = NULL;else{bt = new BiNode;bt->data = ch;bt->lchild = creat(bt->lchild);bt->rchild = creat(bt->rchild);}return bt;
}void BiTree::release(BiNode* bt)
{if (bt != NULL){release(bt->lchild);release(bt->rchild);delete bt;}
}
//镜像
void BiTree::Mirror(BiNode* bt)
{if (bt == nullptr)return;swap(bt->lchild, bt->rchild);//交换左右子树Mirror(bt->lchild);Mirror(bt->rchild);
}
void BiTree::preOrder(BiNode* bt)
{if (bt == NULL){return;}cout << bt->data;preOrder(bt->lchild);preOrder(bt->rchild);
}
int main()
{BiTree tree;tree.Mirror(tree.getRoot());cout << "镜像后二叉树的前序遍历序列是:";tree.preOrder(tree.getRoot());return 0;
}

http://www.lryc.cn/news/365188.html

相关文章:

  • redis安裝启动
  • 为什么Java中的main方法必须是public static void的?
  • shell的编程方式
  • 前端面试项目细节重难点(已工作|做分享)想(八)
  • Loguru,一个 Python 日志神器
  • C++ 反转单词
  • Apache Doris 基础 -- 数据表设计(表索引)
  • 资源描述框架的用途及实际应用解析
  • 工业级物联网边缘网关解决方案-天拓四方
  • 认识微服务,认识Spring Cloud
  • 电脑设置密码怎么设置?让你的电脑更安全!
  • 搜维尔科技:SenseGlove Nova2使用主动接触反馈来模拟手掌的感觉,结合力反馈和振动触觉反馈,使其成为市场上第一款具有手掌反馈的无线触觉手套
  • 基于Python的实验室管理系统的设计与实现(论文+源码)_kaic
  • Windows系统WDS+MDT网络启动自动化安装
  • Apple开发者证书创建完整过程
  • for深入学习
  • 引用(C++)和内联函数
  • 【stm32/CubeMX、HAL库】swjtu嵌入式实验七 ADC 实验
  • springboot 解耦、隔离、异步的原则以及实战
  • 设计模式详解(八):外观模式——Facade
  • R语言绘图 | 双Y轴截断图
  • 使用PNP管控制MCU是否需要复位
  • 二重,三重积分和曲面,曲线积分的关系和区别
  • 处理STM32 DMA方式下的HAL_UART_ERROR_ORE错误
  • 初学者如何对大模型进行微调?
  • 【Qt知识】disconnect
  • String,StringBuffer,StringBuilder的区别?
  • vue基础知识点
  • 正则表达式三
  • MYSQL数据库细节详细分析