Skip to content

Latest commit

 

History

History
60 lines (49 loc) · 1.65 KB

38_二叉树_226. 翻转二叉树 .md

File metadata and controls

60 lines (49 loc) · 1.65 KB

-- 二叉树 - 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
};