剑指 Offer 27. 二叉树的镜像 ⛳

简介: 剑指 Offer 27. 二叉树的镜像 ⛳

前言

数据结构与算法属于开发人员的内功,不管前端技术怎么变,框架怎么更新,版本怎么迭代,它终究是不变的内容。 始终记得在参加字节青训营的时候,月影老师说过的一句话,不要问前端学不学算法。计算机学科的每一位都有必要了解算法,有写出高质量代码的潜意识

一、问题描述

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

例如输入:

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

二、思路讲解

一句话就可以解决该问题,遍历树如果有节点就交换左右子节点,对子节点进行递归操作。 不要在意递归的实现细节,脑子里面没有那么大的栈hhhh。

直接递归版本

var mirrorTree = function(root) {
    if(!root) return null // 递归出口
    let cur = new TreeNode(root.val) // 创建新节点
    cur.left = mirrorTree(root.right) // 将该节点的左节点指向当前树的右节点
    cur.right = mirrorTree(root.left)
    return cur
};

内部递归版本

var mirrorTree = function(root) {
   const dfs = (root) => {
       if (!root) return;
       const temp = root.left;
       root.left = root.right;
       root.right = temp;
       dfs(root.right);
       dfs(root.left);
   };
   dfs(root);
   return root;
};

代码简写版本

var mirrorTree = function(root) {
    if(root){
        [root.left, root.right] = [mirrorTree(root.right), mirrorTree(root.left)]
    }
    return root;
};

image.png

后续

好了,本篇 剑指 Offer 27. 二叉树的镜像 到这里就结束了,我是邵小白,一个在前端领域摸爬滚打的大三学生,欢迎👍评论。


相关文章
|
6月前
剑指 Offer 54:二叉搜索树的第k大节点
剑指 Offer 54:二叉搜索树的第k大节点
52 0
|
6月前
|
存储
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
47 1
|
6月前
剑指 Offer 27:二叉树的镜像
剑指 Offer 27:二叉树的镜像
38 0
|
6月前
剑指 Offer 68 - II:二叉树的最近公共祖先
剑指 Offer 68 - II:二叉树的最近公共祖先
36 0
|
6月前
剑指 Offer 07:重建二叉树
剑指 Offer 07:重建二叉树
33 0
|
6月前
剑指 Offer 55 - I:二叉树的深度
剑指 Offer 55 - I:二叉树的深度
24 0
图解LeetCode——剑指 Offer 68 - II. 二叉树的最近公共祖先
图解LeetCode——剑指 Offer 68 - II. 二叉树的最近公共祖先
4690 1
图解LeetCode——剑指 Offer 27. 二叉树的镜像
图解LeetCode——剑指 Offer 27. 二叉树的镜像
79 0