题目
解题
1.递归方法
code:
# 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:
def isMirror(root1, root2):
if root1 == None and root2 == None:
return True
if root1 == None or root2 == None:
return False
if root1.val != root2.val:
return False
return isMirror(root1.right,root2.left) and isMirror(root1.left, root2.right)
return isMirror(root,root)
结果:
2.迭代方法
code:
# 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:
que = deque([root,root])
while que:
l = que.pop()
r = que.pop()
if l == None and r == None:
continue
if l == None or r == None:
return False
if l.val != r.val:
return False
que.append(l.left)
que.append(r.right)
que.append(l.right)
que.append(r.left)
return True
结果:
或者不从根结点开始,直接取左右子树
# 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:
if not root:
return True
que = deque([root.left,root.right])
while que:
r = que.pop()
l = que.pop()
if l == None and r == None:
continue
if l == None or r == None:
return False
if l.val != r.val:
return False
que.append(l.left)
que.append(r.right)
que.append(l.right)
que.append(r.left)
return True
3.18
over
作者:LeetCode
链接:https://leetcode-cn.com/problems/same-tree/solution/xiang-tong-de-shu-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。