【刷题笔记】226. 翻转二叉树

110 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

226. 翻转二叉树 - 力扣(LeetCode) (leetcode-cn.com)

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。

示例 1: image.png

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

示例 2: image.png

输入:root = [2,1,3]
输出:[2,3,1]

示例 3:

输入:root = []
输出:[]

提示:

  • 树中节点数目范围在 [0, 100] 内
  • -100 <= Node.val <= 100

二、思路分析:

这道题可能可能是最简单的树遍历递归用法了,只需要把跟节点的左右子树调换,再分布递归的对左子树作调换,再递归的对右子树作调换即可达到整二叉树左右子树调换的目的

三、AC 代码:

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
var invertTree = function(root) {
    if(!root) return null
    if(root) {
        var left = root.left
        root.left = root.right
        root.right = left
    }
    invertTree(root.left)
    invertTree(root.right)
    return root
};

四、总结:

做多了就知道了,一般二叉树我们都是优先考虑递归法来解决的。

递归里又有前序遍历,中序遍历,后序遍历等,都需要熟练掌握。

当然也不是一定要递归解,比如有迭代法等等。

五、参考:

翻转二叉树 - 翻转二叉树 - 力扣(LeetCode) (leetcode-cn.com)

翻转二叉树 - 翻转二叉树 - 力扣(LeetCode) (leetcode-cn.com)

「手画图解」剖析Howell大神没写出的面试题 | 翻转二叉树 - 翻转二叉树 - 力扣(LeetCode) (leetcode-cn.com)