【面试题】剑指offer 19

来源:互联网 发布:珠海软件测试培训机构 编辑:程序博客网 时间:2024/06/04 21:54

题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像
代码

#include<iostream>#include<cstdlib>using namespace std;struct BinTreeNode{    int _value;    BinTreeNode* _pLeft;    BinTreeNode* _pRight;    BinTreeNode(int x)        :_value(x)        ,_pLeft(NULL)        ,_pRight(NULL)    {}};class BinTree{public:    BinTree()        :_root(NULL)    {}    ~BinTree()    {        delete _root;        _root=NULL;    }    BinTree(int * a,int size,const int& invalid)    {        int index=0;        _createBinTree(_root,a,size,index,invalid);    }    void Proder()    {        _Proder(_root);        cout<<endl;    }    void MirrorRecursively()    {        _MirrorRecursively(_root);    }protected:    void _MirrorRecursively(BinTreeNode* root)    {        if (root==NULL)            return;        if (root->_pLeft==NULL&&root->_pRight==NULL)            return;        BinTreeNode* tmp=root->_pLeft;        root->_pLeft=root->_pRight;        root->_pRight=tmp;        if(root->_pLeft)            _MirrorRecursively(root->_pLeft);        if (root->_pRight)            _MirrorRecursively(root->_pRight);    }    void _createBinTree(BinTreeNode*& root,int a[],int size,int &index,int invalid)    {        if(index<size&&a[index]!=invalid)        {            root=new BinTreeNode(a[index]);            _createBinTree(root->_pLeft,a,size,++index,invalid);            _createBinTree(root->_pRight,a,size,++index,invalid);        }    }    void _Proder(BinTreeNode* root)    {        if(root==NULL)            return;        cout<<root->_value<<" ";        _Proder(root->_pLeft);        _Proder(root->_pRight);    }private:    BinTreeNode* _root;};void test(){    int arr[]={8,6,5,'#','#',7,'#','#',10,9,'#','#',11};    BinTree t1(arr,13,'#');    t1.Proder();    t1.MirrorRecursively();    t1.Proder();}void test2(){    int arr[]={8,6,5,'#','#',7};    BinTree t1(arr,6,'#');    t1.Proder();    t1.MirrorRecursively();    t1.Proder();}
#include "BinTree.h"int main(){    test();    test2();    system("pause");    return 0;}

结果
test所用的二叉树
test
test2所用二叉树
test2

0 0
原创粉丝点击