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).
Input: root = [1,2,2,3,4,4,3]
Output: true
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.
- 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