【剑指offer27】【C++】二叉树的镜像【递归】

【剑指offer27】【C++】二叉树的镜像【递归】

  • 题目
  • 题解

关注公众号:【THU小鱼干杂货铺】
不间断分享LeetCode优质解题思路、大厂算法题解、学习资料等
【剑指offer27】【C++】二叉树的镜像【递归】_第1张图片

题目

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

例如输入:

     4
   /   \
  2     7
 / \   / \
1   3 6   9

镜像输出:

     	4
 	  /   \
 	 7     2
 	/ \   / \
   9   6 3   1

示例 1:
输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

限制:
0 <= 节点个数 <= 1000

题解

笔记:

思路很清晰,利用递归处理,可以想只有一个节点,三个节点的满二叉树的情况
注意在创建新节点时,不能直接附指针:
TreeNode* res = new TreeNode(root->val); (√正确
TreeNode* res = root;  (X错误

代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* mirrorTree(TreeNode* root) {
        if(root==nullptr) return nullptr;
        TreeNode* res = new TreeNode(root->val);
        res->left = mirrorTree(root->right);
        res->right = mirrorTree(root->left);
        return res;
    }
};

你可能感兴趣的:(C++,LeetCode)