From 17b4ef8970a5148293f6f82c8176744f11e8addb Mon Sep 17 00:00:00 2001 From: sangge-redmi <2251250136@qq.com> Date: Thu, 20 Jun 2024 06:13:37 +0800 Subject: [PATCH] finish 101 --- leetcode/101.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 leetcode/101.py diff --git a/leetcode/101.py b/leetcode/101.py new file mode 100644 index 0000000..432977e --- /dev/null +++ b/leetcode/101.py @@ -0,0 +1,36 @@ +from typing import Optional + + +# Definition for a binary tree node. +class TreeNode: + def __init__(self, val=0, left=None, right=None): + self.val = val + self.left = left + self.right = right + + +class Solution: + def isSymmetric(self, root: Optional[TreeNode]) -> bool: + if root is None: + return True + return self.isMirrorTree(root.left, root.right) + + def isMirrorTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool: + if p is None or q is None: + if p is None and q is None: + return True + return False + if p.val != q.val: + return False + if p.left and q.right: + if not self.isMirrorTree(p.left, q.right): + return False + elif p.left or q.right: + return False + + if p.right and q.left: + if not self.isMirrorTree(p.right, q.left): + return False + elif p.right or q.left: + return False + return True