1.编辑器
我使用的是win10+vscode+leetcode+python3
环境配置参见我的博客:
链接
2.第一百零一题
(1)题目
英文:
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).
中文:
给定一个二叉树,检查它是否是镜像对称的。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/symmetric-tree
(2)解法
① 递归
(耗时:40ms,内存:13.8M)
class Solution:
def isSymmetric(self, root: TreeNode) -> bool:
if not root: return True
def Tree(p, q):
if not p and not q: return True
if p and q and p.val == q.val :
return Tree(p.left, q.right) and Tree(p.right, q.left)
return False
return Tree(root.left, root.right)
② 队列迭代
(耗时:44ms,内存:13.8M)
class Solution:
def isSymmetric(self, root: TreeNode) -> bool:
if not root: return True
def Tree(p, q):
stack = [(q, p)]
while stack:
a, b = stack.pop(0)
if not a and not b:
continue
if a and b and a.val == b.val:
stack.append((a.left, b.right))
stack.append((a.right,b.left))
else:
return False
return True
return Tree(root.left, root.right)