1、题目:翻转二叉树。就是一颗二叉树的所有子树都会发生左右翻转,所以这种情况用递归就可以实现
class Solution(object):
def invertTree(self, root: TreeNode) -> int:
if root is None:
return root
left_node = self.invertTree(root.left)
right_node = self.invertTree(root.right)
root.left = right_node
root.right = left_node
return root
2、 通过队列遍历实现二叉树的翻转
class Solution(object):
def invertTree(self, root: TreeNode) -> int:
if root is None:
return root
queue = [root]
while queue:
node = queue.pop(0)
# 交换左右指针的指向
temp_node = node.left
node.left = node.right
node.right = temp_node
# 将节点加入队列,继续遍历翻转
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return root