Leetcode 101 Symmetric Tree

Given the root of a binary tree, check whether it is a mirror of itself (i.e., symmetric around its center).

image
Input: root = [1,2,2,3,4,4,3] Output: true
image
Input: root = [1,2,2,null,3,null,3] Output: false
  • Soruda bize bir binary tree veriliyor ve bu treenin sağ ve sol kollarının simetrik olup olmadığı soruluyor.
  • Sağ ve sol kollar için rekürsif olarak simetrik olup olmadığını kontrol ederek soruyu çözebiliriz.
image
  • Resimde görüleceği gibi birinci simetri kontrolü için solun solu ve sağın sağı, ikinci simetri kontrolü için solun sağı ve sağın solu kontrol edilir.
# 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 not root:
            return True #kök yok ise true dön
        return self.IsSymetric(root.left,root.right) #simetrik kontrol eden programı çağır
    
    def IsSymetric(self,left,right):
        if left is None or right is None: #sağ ve sol node boş ise true dön
            return left==right
        if left.val !=right.val: #sağ ve sol node birbirine eşit deği ise false dön 
            return False
        outPair = self.IsSymetric(left.left,right.right) #simetri kontrolü için solun solunu ve sağın sağını çağır 
        inPiar  = self.IsSymetric(left.right,right.left) #simetri kontrolü için solun sağını ve sağın solunu çağır
        
        return outPair and inPiar #ikisi de true ise true döner