每日leetcode二叉树的镜像

Posted 小夕学算法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日leetcode二叉树的镜像相关的知识,希望对你有一定的参考价值。

小夕的公众号发文方式

  • 由于公众号的改版,如果不经常发文的话,小夕的读者朋友们会收不到小夕的写的文字,因此天天发文就很必要
  • 但小夕的一篇漫画算法原创文章, 大概需要5-10个小时的耗时,动画+漫画的那些图片制作起来非常费时间!
  • 所以为了既天天发文,又能保持高质量的漫画算法原创文章的更新,现绝对用如下的发文方式

之前的原创动漫漫画算法文

戳一下即可进行跳转哦~

发文方式

  • 小夕会天天更新文章,文章以小夕的每日在 算法刷题群公布的题目的题解为主,另外每天小夕会在文章中聊一下在 大厂百度(嗯~是的 小夕在百度工作)的遇到的问题和一些工作经验( 注意这些文章以每天刷题为主,所以这些文章第二天就会删除,所以请紧随小夕的步伐刷题,后续看情况再议,目前是决定当天发文,第二天删文)
  • 小夕的漫画算法原创文章会保持一周1-2篇的更新
  • 这样小夕既能天天发文保持天天更新,又能保证高质量的算法原创文章了~


image.png
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof

二叉树镜像定义

【每日leetcode】二叉树的镜像

题解

【每日leetcode】二叉树的镜像如上图所示,依次交换左右节点。递归结束的条件:

  • 节点为null
  • 节点是叶子节点,那左右节点都是null,所以没必要交换了呀,直接结束

复杂度

  • 时间复杂度:每个元素都必须访问一次,所以是O(n)
  • 空间复杂度:最坏的情况下,需要存放O(h)个函数调用(h是树的高度),所以是O(h)

动画

出自https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/solution/dong-hua-yan-shi-liang-chong-shi-xian-mian-shi-ti-/

Java

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode mirrorTree(TreeNode root) {
        if(root == null) {
            return null;
        }
        if(root.left == null && root.right == null) return root;
        TreeNode temp = root.right;
        root.right = root.left;
        root.left = temp;
        mirrorTree(root.right);
        mirrorTree(root.left);
        return root;
    }
}

JS

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */

var mirrorTree = function(root) {
    if (!root) {
        return null;
    }
    if(!root.left && !root.right) {
        return root; // 叶子节点直接返回
    }
    // 交换当前节点的左右节点
    const temp = root.left;
    root.left = root.right;
    root.right = temp;

    // 对左右子树做相同操作
    mirrorTree(root.left);
    mirrorTree(root.right);

    return root;
};

C++

/**
 * 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) return nullptr;
        if(!root->left && !root->right) return root;
        mirrorTree(root->left);
        mirrorTree(root->right);
        swap(root->left, root->right); // 交换左右节点
        return root;
    }
};

Python

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
 def mirrorTree(self, root):
  """
  :type root: TreeNode
  :rtype: TreeNode
  "
""
  if not root:
   return None
  root.left,root.right = root.right,root.left // 交换左右节点
  self.mirrorTree(root.left)
  self.mirrorTree(root.right) 
  return root

php

/**
 * Definition for a binary tree node.
 * class TreeNode {
 *     public $val = null;
 *     public $left = null;
 *     public $right = null;
 *     function __construct($value) { $this->val = $value; }
 * }
 */
class Solution {

    /**
     * @param TreeNode $root
     * @return TreeNode
     */
    function mirrorTree($root) {
        if($root==null){
            return ;
        }

        $tmp = $root -> right;
        $root->right = $root->left;
        $root->left = $tmp;

        $this->mirrorTree($root->left);
        $this->mirrorTree($root->right);
        return $root;
    }
}

小夕最后有话说

  • 动画、漫画、加6种编程语言(Java、C++、PHP、GO、Python、JS)的讲解很费心血,希望大家能帮忙转发到朋友圈和身边的朋友, 这样小夕的文章能让更多的人看见的话,小夕会更有动力更新文章的呀~。

  • 公众号后台回复  打卡 查看公众号福利 坚持转发文章到朋友圈,小夕送上100元的红包给你,谢谢铁杆粉丝的支持。
  • 加小夕微信  tiehanhan12342 拉你进算法刷题群。

以上是关于每日leetcode二叉树的镜像的主要内容,如果未能解决你的问题,请参考以下文章

《LeetCode之每日一题》:216.二叉树的最大深度

《LeetCode之每日一题》:211.二叉树的坡度

《LeetCode之每日一题》:237.二叉树的最小深度

LeetCode(剑指 Offer)- 27. 二叉树的镜像

算法leetcode|剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树(rust很强)

算法leetcode|剑指 Offer 27. 二叉树的镜像|226. 翻转二叉树(rust很强)