求一个二叉树的镜像/在二叉树中查找某个元素X

来源:互联网 发布:目录显示源码 编辑:程序博客网 时间:2024/05/16 14:00

1.二叉树镜像

    void  _MirrorTree(Node* root)    {        //1.空树,直接返回        if (root==NULL)        {            return ;        }        //2.树只有一个结点,不用求镜像,直接返回        if(root->left==NULL&&root->right==NULL)        {            return ;        }        //3.树不为空,且大于一个结点        swap(root->left,root->right);        _MirrorTree(root->left);        _MirrorTree(root->right);    }    void _fun(Node* root)    {        if (root==NULL)        {            return ;        }        cout<<root->data<<" ";        _fun(root->left);        _fun(root->right);    }

2.查找

    Node* _Find(Node* root,const T x)//二叉树中查找某元素    {        //1.如果树为空,返回空指针        if (root==NULL)        {            return NULL;        }        //2.如果找到了该节点,直接返回该节点的指针        if (root->data==x)        {            return root;        }        //3.如果当前树的根结点的值域不是X,则先找左子树,后找右子树        Node* ret=_Find(root->left,x);        //3.1如果ret不为空,代表在左树中找到了结点,那么直接返回,不用在右树中找了        if (ret)        {            return  ret;        }        else//3.2如果在左树中没有找到,那么就要在右树中找,在右树中无论找到与否,都直接返回,找到返回找到的结点,没找到就返回空;        {            ret=_Find(root->right,x);            return ret;        }    } 
原创粉丝点击