难度:简单
题目描述:
思路总结:没什么可说的,递归+迭代两种方法。
题解一:(递归)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isSymmetric(self, root: TreeNode) -> bool:
#思路:递归+迭代
return self.isMetric(root,root)
def isMetric(self,n1,n2):
#两种情况,父节点相同,右子节点=左子节点
if not n1 and not n2:return True
if not n1 or not n2:return False
return n1.val==n2.val and self.isMetric(n1.left,n2.right) and self.isMetric(n1.right,n2.left)
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
from collections import deque
class Solution:
def isSymmetric(self, root: TreeNode) -> bool:
#思路:递归+迭代
queue = deque([root, root])
while queue:
l, r = queue.popleft(),queue.popleft()
if not l and not r:continue
if not l or not r:return False
if l.val != r.val:return False
queue.append(l.left)
queue.append(r.right)
queue.append(l.right)
queue.append(r.left)
return True