Lintcode 175. 翻转二叉树

我的代码:

class Solution:
    """
    @param root: a TreeNode, the root of the binary tree
    @return: nothing
    """
    def invertBinaryTree(self, root):
        if root.left == None and root.right == None:
            return
        if root.left != None and root.right == None://这里一定要改成elif,因为左右子节点交换后会变成下面的if的情况,导致再一次交换,所以要改成elif
            root.right = root.left
            root.left = None
            self.invertBinaryTree(root.right)
        if root.left == None and root.right != None://包括这里
            root.left = root.right
            root.right = None
            self.invertBinaryTree(root.left)
        else:
            temp = root.left
            root.left = root.right
            root.right = temp
            self.invertBinaryTree(root.left)
            self.invertBinaryTree(root.right)

修改后代码:

class Solution:
    """
    @param root: a TreeNode, the root of the binary tree
    @return: nothing
    """
    def invertBinaryTree(self, root):
        if root.left == None and root.right == None:
            return
        elif root.left != None and root.right == None:
            root.right = root.left
            root.left = None
            self.invertBinaryTree(root.right)
        elif root.left == None and root.right != None:
            root.left = root.right
            root.right = None
            self.invertBinaryTree(root.left)
        else:
            temp = root.left
            root.left = root.right
            root.right = temp
            self.invertBinaryTree(root.left)
            self.invertBinaryTree(root.right)

猜你喜欢

转载自blog.csdn.net/Sallywa/article/details/82824970