简单的面试题,产生一个二叉树而且产生该二叉树的镜像。
原二叉树
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); }