前言🌧️
算法,对前端人来说陌生又熟悉,很多时候我们都不会像后端工程师一样重视这项能力。但事实上,算法对每一个程序员来说,都有着不可撼动的地位。
因为开发的过程就是把实际问题转换成计算机可识别的指令,也就是《数据结构》里说的,「设计出数据结构,在施加以算法就行了」。
当然,学习也是有侧重点的,作为前端我们不需要像后端开发一样对算法全盘掌握,有些比较偏、不实用的类型和解法,只要稍做了解即可。
题目🦀
难度简单
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
输入:
4 / \ 7 2 / \ / \ 9 6 3 1 复制代码
输出:
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
解题思路🌵
- 此题符合
分
解
合
的特性,采用分而治之的思想,分别反转各个节点的子节点 - 当前节点的左节点等于右节点
- 当节点为null时返回null
解法🔥
var mirrorTree = function(root) { if(!root){return null} return { val:root.val, left:mirrorTree(root.right), right:mirrorTree(root.left) } };
时间复杂度:O(n)
空间复杂度:O(n)
结束语🌞