-- 二叉树 - easy 点击直达力扣
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
示例 1:
输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]
示例 2:
输入:root = [2,1,3]
输出:[2,3,1]
示例 3:
输入:root = []
输出:[]
解题方法:二叉树的前中后序遍历:
注意在中序遍历中,不能只是简单的交换位置,因为在第一次遍历后,左右子树已经交换位置了,
此时再递归的右子树实际上是原来的左子树,故需要进行两次左子树的递归。
/**
* Definition for a binary tree node.
* 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 === null) { return null }
// 前序遍历
[root.left, root.right] = [root.right, root.left]
invertTree(root.left)
invertTree(root.right)
// // 后序遍历
// invertTree(root.left)
// invertTree(root.right)
// [root.left, root.right] = [root.right, root.left]
// // 中序遍历
// invertTree(root.left)
// [root.left, root.right] = [root.right, root.left]
// invertTree(root.left)
return root
};