226. 翻转二叉树

https://leetcode-cn.com/problems/invert-binary-tree/

//递归
  func invertTree(_ root: TreeNode?) -> TreeNode? {
    if root == nil {return nil}

    let right = invertTree(root?.right)
    let left = invertTree(root?.left)
    root?.left = right
    root?.right = left
    return root
  }
//迭代,层序遍历一次交换左右节点
  func invertTree(_ root: TreeNode?) -> TreeNode? {
    if root == nil {return nil}
    var queue = Array<TreeNode>()
    queue.append(root!)
    while !queue.isEmpty {
        let curNode = queue.removeFirst()
        let tmpNode = curNode.left
        curNode.left = curNode.right
        curNode.right = tmpNode
        if curNode.left != nil {queue.append(curNode.left!)}
        if curNode.right != nil {queue.append(curNode.right!)}
    }
    return root
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容