Leetcode # 101. Symmetric Tree
https://leetcode.com/problems/symmetric-tree/
Solution
Time Complexity: O(len(tree))
Space Complexity: O(len(tree))
(The input and output generally do not count towards the space complexity.)
class Solution: def isSymmetric(self, root: Optional[TreeNode]) -> bool: cur_level = [[[root.left], [root.right]]] if root else [] while cur_level: cur_ls, cur_rs = cur_level.pop() # cur_rs is reversed next_ls, next_rs = [], [] """ print(f"{len(cur_ls)}: ", [node.val if node else None for node in cur_ls], f"{len(cur_rs)}: ", [node.val if node else None for node in cur_rs]) # """ for i in range(len(cur_ls)): cur_l, cur_r = cur_ls[i], cur_rs[i] """ print(cur_l.val if cur_l else "None", cur_r.val if cur_r else "None") # """ if cur_l: if not cur_r or cur_l.val != cur_r.val: return False next_ls.append(cur_l.left) next_ls.append(cur_l.right) next_rs.append(cur_r.right) next_rs.append(cur_r.left) else: if cur_r: return False next_ls.append(None) next_ls.append(None) next_rs.append(None) next_rs.append(None) # if both next_ls and next_rs are [None, None, ..., None] if len([node for node in next_ls if node]\ + [node for node in next_rs if node]) == 0: break cur_level.append([next_ls, next_rs]) return True
Last Updated on 2023/08/16 by A1go