1.编辑器
我使用的是win10+vscode+leetcode+python3
环境配置参见我的博客:
链接
2.第二百二十六题
(1)题目
英文:
Invert a binary tree.
中文:
翻转一棵二叉树。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/invert-binary-tree
(2)解法
① 递归
(耗时:44ms,内存:13.5M)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if not root: return root
root.left, root.right = self.invertTree(root.right), self.invertTree(root.left)
return root
② 迭代
(耗时:36ms,内存:13.5M)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
cur = deque([root])
while cur:
node = cur.popleft()
if node.left: cur.append(node.left)
if node.right: cur.append(node.right)
node.left, node.right = node.right, node.left
return root