102. Binary Tree Level Order Traversal
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
from collections import deque
class Solution(object):
def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
if not root:
return []
res = []
que = deque()
que.append(root)
while que:
level = []
for i in range(len(que)):
t = que.popleft()
level.append(t.val)
if t.left:
que.append(t.left)
if t.right:
que.append(t.right)
res.append(level)
return res
226.
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if not root:
return None
queue = collections.deque([root])
while queue:
for i in range(len(queue)):
node = queue.popleft()
node.left, node.right = node.right, node.left
if node.left: queue.append(node.left)
if node.right: queue.append(node.right)
return root
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def isSymmetric(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if not root:
return False
return self.compare(root.left,root.right)
def compare(self,left,right):
if left and not right: return False
elif not left and right: return False
elif not left and not left: return True
elif left.val != right.val: return False
inside = self.compare(left.right,right.left)
outside = self.compare(left.left,right.right)
res = inside and outside
return res