有大神也不能写出来的翻转二叉树
题目地址:这里
关键点在于将根的左右子树翻转,然后将子树的左右子树再翻转,加上层次遍历,用队列保存遍历结果
我的答案
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def invertTree(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
if root == None:
return root
if root.left == root.right == None:
return root
nodeList = []
nodeList.append(root)
while nodeList != []:
curNode = nodeList.pop(0)
curNode.left, curNode.right = curNode.right, curNode.left
if curNode.left:
nodeList.append(curNode.left)
if curNode.right:
nodeList.append(curNode.right)
return root