解题思路:
一):递归
要求翻转整棵树,就是要把每个节点的左孩子与右孩子交换,那么可以用递归将左右孩子交换,从下到上,从里到外
if not root:
return root
cur = root.left
root.left = self.invertTree(root.right)
root.right = self.invertTree(cur)
return root
二):广度优先
可以用BFS来一层一层的把每个节点的左右孩子互换,只需要对层序遍历稍微做出下改变。
从外到里,从上到下进行交换
if not root:
return root
from collections import deque
que = deque([root]) #创建队列
while que:
cur = que.popleft()
left = cur.left #将节点左右孩子互换
cur.left = cur.right
cur.right = left
if cur.left: #若节点左孩子存在加入
que.append(cur.left)
if cur.right:
que.append(cur.right) #若右孩存在加入
return root