题解 | #二叉树的镜像#

二叉树的镜像

http://www.nowcoder.com/practice/a9d0ecbacef9410ca97463e4a5c83be7

C语言
思路:从创建二叉树的方法入手,创建二叉树的时候使用递归调用的方法给根结点、左子树、右子树分别赋值。题目要求镜像,实际上就是将每一层的左右子树互换,因此考虑在赋值的时候将赋值过程进行交换。重新定义一个函数exchange,用于交换指针指向,在创建二叉树的过程中进行左右子树的互换。
代码如下:

/**
 * struct TreeNode {
 *    int val;
 *    struct TreeNode *left;
 *    struct TreeNode *right;
 * };
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param pRoot TreeNode类 
 * @return TreeNode类
 */

void exchange(struct TreeNode*pRoot)
{
    struct TreeNode*T;
    T=(pRoot->left);
    (pRoot->left)=(pRoot->right);
    pRoot->right=T;
}


struct TreeNode* Mirror(struct TreeNode* pRoot ) {
    // write code here
    if(pRoot==NULL)
    {
        return NULL;
    }
    else
    {
        exchange(pRoot);
        Mirror(pRoot->left);
        Mirror(pRoot->right);
    }
    return pRoot;
}
牛客刷题记录 文章被收录于专栏

记录自己的刷题记录,刷过的题的解法

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务