Please enable Javascript to view the contents

剑指office(十八)二叉树的镜像

 ·  ☕ 1 分钟  ·  🎅 YSL

题目描述

操作给定的二叉树,将其变换为源二叉树的镜像。

比如:    源二叉树 
            8
           /  \
          6   10
         / \  / \
        5  7 9 11
        镜像二叉树
            8
           /  \
          10   6
         / \  / \
        11 9 7  5

示例1

输入

{8,6,10,5,7,9,11}

返回值

{8,10,6,11,9,7,5}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param pRoot TreeNode类 
     * @return TreeNode类
     */
    TreeNode* Mirror(TreeNode* pRoot) {
        // write code here
        if(pRoot==NULL||(pRoot->left==NULL&&pRoot->right==NULL))
            return pRoot;
        swapNode(pRoot);
        Mirror(pRoot->left);
        Mirror(pRoot->right);
        return pRoot;
    }
    void swapNode(TreeNode* pRoot)
    {
        TreeNode* tempVal = pRoot->left; 
        pRoot->left = pRoot->right;
        pRoot->right = tempVal;
    }
};