101.对称二叉树

难度:简单
题目描述:
101.对称二叉树_第1张图片
思路总结:没什么可说的,递归+迭代两种方法。
题解一:(递归)

# 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)

题解一结果:
101.对称二叉树_第2张图片
题解二:(迭代)

# 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

题解二结果:
101.对称二叉树_第3张图片

你可能感兴趣的:(朱滕威的面试之路)