Input: root = [3,9,20,null,null,15,7]
Output: [[3],[20,9],[15,7]]
Input: root = [1]
Output: [[1]]
Soruda bize bir binary tree veriliyor ve bu binary tree deki her basamağı kökten başlayarak zikzak şeklinde yazmamız isteniyor.Örneğin 0. basamak kök soldan sağa,1. basamaktaki elemanlar sağdan sola yazılacak,2. basamaktaki elemanlar yine soldan sağa yazılacak bu böyle gidecek.
4 liste oluşturuz s1 = [root],s2 = [],level = [],result = []
s1 içinde root ile program akışını başlatırız.
Sonra sırası ile s1’in içindekilerin childları s2’ye,s2’in içindeki nodeların childları s1’e atayarak ilerleriz.
# 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 zigzagLevelOrder ( self , root : Optional [ TreeNode ]) -> List [ List [ int ]]:
if root is None :
return []
s1 = [ root ]
s2 = []
level = []
result = []
while s1 or s2 :
while s1 :
root = s1 . pop ()
level . append ( root . val )
if root . left :
s2 . append ( root . left )
if root . right :
s2 . append ( root . right )
result . append ( level )
level = []
while s2 :
root = s2 . pop ()
level . append ( root . val )
if root . right :
s1 . append ( root . right )
if root . left :
s1 . append ( root . left )
if level != []:
result . append ( level )
level = []
return result