leetCode#226. Invert Binary Tree

来源:互联网 发布:大野克夫的水平知乎 编辑:程序博客网 时间:2024/05/18 02:02

Description

Invert a binary tree.     4   /   \  2     7 / \   / \1   3 6   9to     4   /   \  7     2 / \   / \9   6 3   1

Trivia:
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.

Code

# Definition for a binary tree node.# class TreeNode(object):#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution(object):    def invertTree(self, root):        """        :type root: TreeNode        :rtype: TreeNode        """        if root == None:            return root        root.left, root.right = root.right, root.left        self.invertTree(root.left)        self.invertTree(root.right)        return root

Conclusion

该题比较简单,大家的思路也都基本一致。该题还有另一种解法,就是用队列,将需要invert的节点放进队列中,一个一个的替换,然后再将替换的节点的子节点放进去。这样的好处是解决了节点左右子节点互换的时候,子节点太大,导致中间缓存的temp开销太大,超出内存限制。某种情况下,是该思考的情形。

原创粉丝点击