美文网首页iOS面试剖析
IOS 算法(基础篇) ----- 翻转二叉树

IOS 算法(基础篇) ----- 翻转二叉树

作者: ShawnAlex | 来源:发表于2020-09-16 09:34 被阅读0次

这道算法源于一个故事
程序员 Howell 在 Google 面试时遇到了让人悲伤的情境。他把这次面试经历写成了一条简短的推文: Google:我们 90% 的工程师都用你写的软件(Homebrew),但你没法在白板上翻转二叉树,所以滚蛋吧。

那么我们今天看一下这道翻转二叉树

输入:

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

返回:

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

即: 左右子节点互换

思路

思路很简单, 递归调用自身方法
方法里面令 左子节点=右子节点 右子节点=左子节点 继续递归

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     public var val: Int
 *     public var left: TreeNode?
 *     public var right: TreeNode?
 *     public init(_ val: Int) {
 *         self.val = val
 *         self.left = nil
 *         self.right = nil
 *     }
 * }
 */
class Solution {
    func invertTree(_ root: TreeNode?) -> TreeNode? {
        if root == nil {
            return nil
        }
        let temp = root!.left
        root!.left = root!.right
        root!.right =  temp
        invertTree(root!.left)
        invertTree(root!.right)
        return root
    }
}

时间复杂度:
O(N), 其中 N 为二叉树节点的数目。我们会遍历二叉树中的每一个节点,对每个节点而言,我们在常数时间内交换其两棵子树。

空间复杂度:
O(N),使用的空间由递归栈的深度决定,它等于当前节点在二叉树中的高度。在平均情况下,二叉树的高度与节点个数为对数关系,即 O(logN)。而在最坏情况下,树形成链状,空间复杂度为 O(N)

题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
IOS 算法合集地址

相关文章

  • IOS 算法(基础篇) ----- 翻转二叉树

    这道算法源于一个故事程序员 Howell 在 Google 面试时遇到了让人悲伤的情境。他把这次面试经历写成了一条...

  • IOS 算法(基础篇) ----- 翻转图像

    给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即...

  • 翻转二叉树(Java)

    翻转二叉树 对于此题而言,我们使用深度优先算法来遍历二叉树。 1、深度优先算法是根据二叉树的路径进行遍历2、广度优...

  • LeetCode基础算法-树

    LeetCode基础算法-树 LeetCode 树 基础算法 1. 二叉树的最大深度 给定一个二叉树,找出其最大深...

  • 二叉树的基本算法

    二叉树的基本算法 树、二叉树 的基本概念,参考数据结构算法之美-23讲二叉树基础(上):树、二叉树[https:/...

  • leecode刷题(24)-- 翻转二叉树

    leecode刷题(24)-- 翻转二叉树 翻转二叉树 翻转一棵二叉树。 示例: 输入: 输出: 备注:这个问题是...

  • LeetCode题解之翻转二叉树

    翻转二叉树 题目描述 翻转一棵二叉树。 示例 : 输入: 输出: 解题思路 方法一:递归 使用递归来翻转二叉树。 ...

  • OC二叉树相关操作

    二叉树-你必须要懂!(二叉树相关算法实现-iOS) http://www.cnblogs.com/manji/p/...

  • 【算法题】递归求二叉树深度

    二叉树的深度算法,是二叉树中比较基础的算法了。对应 LeetCode 第104题。 然后你会发现 LeetCode...

  • iOS 动画基础总结篇

    iOS 动画基础总结篇 iOS 动画基础总结篇

网友评论

    本文标题:IOS 算法(基础篇) ----- 翻转二叉树

    本文链接:https://www.haomeiwen.com/subject/drlcyktx.html