226. 翻转二叉树
js
;(function () {
/**
* 226. 翻转二叉树
* 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
*
* 输入:root = [4,2,7,1,3,6,9]
* 输出:[4,7,2,9,6,3,1]
*
* 输入:root = [2,1,3]
* 输出:[2,3,1]
*
*/
class TreeNode {
val: number
left: TreeNode | null
right: TreeNode | null
constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
this.val = val === undefined ? 0 : val
this.left = left === undefined ? null : left
this.right = right === undefined ? null : right
}
}
function invertTree(root: TreeNode | null): TreeNode | null {
// 方法一:
// if (!root) return root
// // 核心:左右节点互换
// function preorder (root: TreeNode | null) {
// if (!root) return
// let temp: TreeNode | null = null;
// temp = root.left
// root.left = root.right;
// root.right = temp;
// preorder(root.left)
// preorder(root.right)
// }
// preorder(root)
// return root
// 方法二:简化方法一
if (!root) return root
let left = invertTree(root.left)
let right = invertTree(root.right)
root.left = right
root.right = left
return root
// 方法三:
}
})()