Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
题目分析
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
思路讲解
使用递归的方法,递归的交换当前节点的左右子树即可
示例
示例一
输入: root = [4,2,7,1,3,6,9]
输出: [4,7,2,9,6,3,1]
示例二
输入: root = [2,1,3]
输出: [2,3,1]
示例三
输入: root = []
输出: []
代码
/*
* @Autor: frllk
* @Description:
* @Date: 2022-02-10 11:08:48
* @LastEditors: frllk
* @LastEditTime: 2022-03-27 01:11:47
* @FilePath: \frllk-studybook\算法\week4\226.翻转二叉树.js
*/
/*
* @lc app=leetcode.cn id=226 lang=javascript
*
* [226] 翻转二叉树
*/
// @lc code=start
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
var invertTree = function (root) {
// 如果二叉树为空,则返回null, 如果不为空,在进行后序操作
if (!root) {
return null
}
// ES6的解构赋值,先翻转root的左子树和右子树,两两交换
// const left = invertTree(root.left)
// const right = invertTree(root.right)
// root.left = right
// root.right = left
// // root 节点需要交换它的左右子节点
// [root.left, root.right] = [root.right, root.left]
// // 让左右子节点继续翻转它们的子节点
// invertTree(root.left) // 翻转它的左子树
// invertTree(root.right) // 翻转它的右子树
[root.left, root.right] = [invertTree(root.right), invertTree(root.left)]
return root
};
// @lc code=end