226. 翻转二叉树

leetcode,算法,tree node 2019-11-06

翻转一棵二叉树。

示例:

输入:

     4
   /   \
  2     7
 / \   / \
1   3 6   9
输出:

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

备注:
这个问题是受到 Max Howell 的 原问题 启发的 :

谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。

解析

  • 遍历二叉树
  • 每个节点交换他们的子节点

解码

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func invertTree(root *TreeNode) *TreeNode {
    return vert(root)
}
func vert(root *TreeNode)*TreeNode{
    if root == nil {
        return nil
    }
    left := root.Left
    root.Left = root.Right
    root.Right = left
    vert(root.Left)
    vert(root.Right)
    return root
}

本文由 小东@xiaodo 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。