翻转二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
递归法
class Solution:
def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
if not root:
return None
# 交换根节点的左右子节点
root.left, root.right = root.right, root.left
# 递归翻转左子树和右子树
self.invertTree(root.left)
self.invertTree(root.right)
return root
迭代法
class Solution:
def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
if not root:
return None
stack = [root]
while stack:
node = stack.pop()
node.left,node.right = node.right,node.left
if node.left:
stack.append(node.left)
if node.right:
stack.append(node.right)
return root