- 题目描述:
图片说明

- 题目链接:
https://www.nowcoder.com/practice/564f4c26aa584921bc75623e48ca3011?tpId=117&&tqId=34994&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-ranking

- 设计思想:
图片说明
详细操作流程看下图
图片说明

-视频讲解链接B站视频讲解

- 代码:
c++版本:

 /*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/
class Solution {
public:
    void Mirror(TreeNode *pRoot) {
        if(pRoot){//如果节点不为空就开始进行翻转
            //以下三行类似两个数交换
            TreeNode *temp = pRoot->left;//temp用于临时存储left节点,以防止在复制的时候丢失
            pRoot->left = pRoot->right;
            pRoot->right = temp;
            Mirror(pRoot->left); //把当前节点的左孩子进行翻转
            Mirror(pRoot->right); //把当前节点的右孩子进行翻转
        }
    }
};

Java版本:

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public void Mirror(TreeNode root) {
        if(root != null){ //如果节点不为空就开始进行翻转
            //以下三行类似两个数交换
            TreeNode temp = root.left; //temp用于临时存储left节点,以防止在复制的时候丢失
            root.left = root.right;
            root.right = temp;
            Mirror(root.left); //把当前节点的左孩子进行翻转
            Mirror(root.right); //把当前节点的右孩子进行翻转
        }

    }
}

Python版本:

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

#
# 
# @param pRoot TreeNode类 
# @return void
#
class Solution:
    def Mirror(self , pRoot ):
        if  pRoot : #如果节点不为空就开始进行翻转
            #以下三行类似两个数交换
            temp = pRoot.left #temp用于临时存储left节点,以防止在复制的时候丢失
            pRoot.left = pRoot.right
            pRoot.right = temp
            self.Mirror(pRoot.left) #把当前节点的左孩子进行翻转
            self.Mirror(pRoot.right)#把当前节点的右孩子进行翻转