This problem was inspired by this original tweet by Max Howell: 「Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.」
1 2 3 4 5
4 / \ 2 7 / \ / \ 1 3 6 9
to
1 2 3 4 5
4 / \ 7 2 / \ / \ 9 6 3 1
分析
闲着无聊可以写个非递归版本。。。。
解决方案1(Python)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]: if not root: return root left = self.invertTree(root.left) right = self.invertTree(root.right) root.left, root.right = right, left return root
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ funcinvertTree(root *TreeNode) *TreeNode { if root == nil { returnnil } left := invertTree(root.Left) right := invertTree(root.Right) root.Left = right root.Right = left return root }