二叉树的镜像--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;
}

相关推荐

  1. 镜像--c++【记录

    2024-06-07 11:06:01       12 阅读
  2. 第k层结点个数--c++【记录

    2024-06-07 11:06:01       10 阅读
  3. 判断是否是平衡--c++【记录

    2024-06-07 11:06:01       7 阅读
  4. 剑指 Offer(第2版)面试 27:镜像

    2024-06-07 11:06:01       42 阅读
  5. 算法记录】226. 翻转

    2024-06-07 11:06:01       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-07 11:06:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-07 11:06:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-07 11:06:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-07 11:06:01       20 阅读

热门阅读

  1. 使用C++版本的opencv dnn 部署onnx模型

    2024-06-07 11:06:01       8 阅读
  2. 【OpenCV 基础知识 21】霍夫变换圆形检测

    2024-06-07 11:06:01       10 阅读
  3. Ubuntu系统中挂载一个jar运行程序

    2024-06-07 11:06:01       8 阅读
  4. flink 作业动态维护更新,不重启flink,不提交作业

    2024-06-07 11:06:01       7 阅读
  5. Flink协调器Coordinator及自定义Operator

    2024-06-07 11:06:01       10 阅读
  6. 人工智能安全风险分析及应对策略

    2024-06-07 11:06:01       8 阅读
  7. stm32g030f6p6读取ina3221

    2024-06-07 11:06:01       9 阅读
  8. Emacs Verilog Mode 简单使用指南

    2024-06-07 11:06:01       10 阅读
  9. 五八 && 领岳科技面经 2024.06.06

    2024-06-07 11:06:01       8 阅读