[LeetCode 226. 翻转二叉树] |刷题打卡

136 阅读1分钟

一、题目描述:

翻转一棵二叉树。

示例:

输入:

    4
  /   \
 2     7
/ \   / \
1   3 6   9

输出:

     4
   /   \
  7     2
 / \   / \
9   6 3   1

引自:leetcode-cn.com/problems/in…

题目链接:226. 翻转二叉树

二、思路分析:

  1. 交换根结点的左右子结点;
  2. 递归翻转左子树和右子树。

三、AC 代码:

class Solution {
    func invertTree(_ root: TreeNode?) -> TreeNode? {
        if (root == nil) {
            // 空树
            return root;
        }

        // 交换根结点的左右子孩子结点
        swapLeftRightNode(root);

        // 交换子结点的左右子树
        invertTree(root?.left);
        invertTree(root?.right);

        return root;
    }

    //! 交换左右子结点
    func swapLeftRightNode(_ node: TreeNode?) {
        
        var tempNode : TreeNode? = node?.left;
        node?.left = node?.right;
        node?.right  = tempNode;
    }
}

四、参考学习网址

本文正在参与「掘金 3 月闯关活动」, 点击查看 活动详情