前言
本人刷剑指offer的一些程序记录,头文件,主函数都齐全,可直接上机运行
提示:以下是本篇文章正文内容,下面案例可供参考
一、题目
操作给定的⼆叉
树
,将其变换为源⼆叉树的镜像。
二、程序
1.头文件
#include <iostream>
using namespace std;
typedef struct TreeNode
{
char val;
TreeNode *left;
TreeNode *right;
}*BiTree;
2.类和主函数
class solution
{
public:
void CreateBiTree(BiTree &T)
{
char ch;
cin>>ch;
if(ch=='#') T=NULL;
else
{
T=new TreeNode;
T->val=ch;
CreateBiTree(T->left);
CreateBiTree(T->right);
}
}
void PreOrderTraverse(BiTree T)
{
if (T)
{
cout << T->val;
PreOrderTraverse(T->left);
PreOrderTraverse(T->right);
}
}
void Mirror(BiTree &T)
{
if(T==NULL || (T->left==NULL && T->right==NULL))
return ;
BiTree temp;
temp=T->left;
T->left=T->right;
T->right=temp;
if(T->left) Mirror(T->left);
if(T->right) Mirror(T->right);
}
};
int main()
{
BiTree T;
solution stu;
cout<< "请输入 tree 建立二叉链表的序列:\n";
stu.CreateBiTree(T);
cout<< "原树的先序遍历序列为:\n";
stu.PreOrderTraverse(T);
cout<< "\n镜像树的先序遍历序列为:\n";
stu.Mirror(T);
stu.PreOrderTraverse(T);
}