简单的面试题,产生一个二叉树而且产生该二叉树的镜像。
原二叉树
1
2 3
镜像后
1
3 2
#include <iostream>
using namespace std;
typedef struct BinaryTreeNode
{
char data ;
BinaryTreeNode* left ;
BinaryTreeNode* right;
}BinaryTreeNode,* PBinaryTreeNode;
class BinaryTreeManager
{
public:
BinaryTreeManager()
{
m_root=NULL;
}
void Init()
{
m_root=CreateBinaryTree() ;
}
//输出二叉树 兴许遍历
void ShowBinaryTree(PBinaryTreeNode node)
{
if(node!=NULL)
{
ShowBinaryTree(node->left);
cout<<node->data<<" ";
ShowBinaryTree(node->right);
}
}
//镜像
void Mirror(PBinaryTreeNode node)
{
if(node!=NULL){
PBinaryTreeNode tem=node->right ;
node->right=node->left ;
node->left=tem;
Mirror(node->left);
Mirror(node->right);
}
}
PBinaryTreeNode GetRoot()
{
return m_root ;
}
private:
//创建二叉树
PBinaryTreeNode CreateBinaryTree()
{
char ch;
PBinaryTreeNode T;
cin>>ch ;
//结束输出
if(ch=='#')
{
cout<<"------"<<endl;
T=NULL;
}
else
{
T=new BinaryTreeNode;
T->data=ch ;
T->left=CreateBinaryTree() ;
T->right=CreateBinaryTree();
}
return T;
}
private:
PBinaryTreeNode m_root ;
};
void main()
{
BinaryTreeManager bTManager ;
bTManager.Init() ;
PBinaryTreeNode root=bTManager.GetRoot();
bTManager.ShowBinaryTree(root);
///对二叉树做镜像
bTManager.Mirror(root);
cout<<endl;
bTManager.ShowBinaryTree(root);
}