剑指offer 26. 二叉树的镜像

简介: 剑指offer 26. 二叉树的镜像

题目描述

输入一个二叉树,将它变换为它的镜像。

数据范围

树中节点数量 [0,100]。

样例

输入树:
    8
   / \
  6  10
 / \ / \
5  7 9 11
[8,6,10,5,7,9,11,null,null,null,null,null,null,null,null] 
输出树:
    8
   / \
  10  6
 / \ / \
11 9 7  5
[8,10,6,11,9,7,5,null,null,null,null,null,null,null,null]


方法一:二叉树,递归 O(n)

这道题直接递归即可,每次递归都交换左右指针。我们拿题目的样例来举例,看看具体的效果是什么:

第一步: 交换根结点的左右两个指针。

f37c238364844389b198b52a60fe0c92.png


d96a7b6ae4dc4669b4953fde1d4c5be4.png


第二步: 递归到根结点的左右两个结点执行交换操作,先递归左结点,并交换其左右指针。

第三步: 由于已经到了叶子结点,回溯到根结点继续递归其右结点,并交换其左右指针。


d5b0c8243c9b410bae66dd8931daeeef.png6d4104a01812448fa13e2fbd7eeb2c03.png




/**
 * 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:
    void mirror(TreeNode* root) {
        if (!root)   return;
        swap(root->left, root->right);
        mirror(root->left);
        mirror(root->right);
    }
};


欢迎大家在评论区交流~

目录
相关文章
【剑指offer】-二叉树的镜像-18/67
【剑指offer】-二叉树的镜像-18/67
|
7月前
|
消息中间件 Kubernetes NoSQL
剑指offer常见题 - 二叉树问题(三)
剑指offer常见题 - 二叉树问题(三)
|
7月前
|
消息中间件 Kubernetes NoSQL
剑指offer常见题 - 二叉树问题(一)
剑指offer常见题 - 二叉树问题(一)
|
7月前
牛客网-二叉树的镜像
牛客网-二叉树的镜像
36 0
|
7月前
|
消息中间件 Kubernetes NoSQL
剑指offer常见题 - 二叉树问题(二)
剑指offer常见题 - 二叉树问题(二)
|
7月前
【一刷《剑指Offer》】面试题 19:二叉树的镜像
【一刷《剑指Offer》】面试题 19:二叉树的镜像
|
算法
代码随想录算法训练营第十七天 | LeetCode 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和
代码随想录算法训练营第十七天 | LeetCode 110. 平衡二叉树、257. 二叉树的所有路径、404. 左叶子之和
50 0
leetcode105/1382-构建二叉树与二叉平衡树(人生苦短,速速递归)
leetcode105/1382-构建二叉树与二叉平衡树(人生苦短,速速递归)
leetcode105/1382-构建二叉树与二叉平衡树(人生苦短,速速递归)
|
C++
剑指Offer - 面试题27:二叉树的镜像
剑指Offer - 面试题27:二叉树的镜像
69 0
剑指offer_二叉树---二叉树的镜像
剑指offer_二叉树---二叉树的镜像
50 0