102. 二叉树的层序遍历
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if root is None:
return []
stack = [root]
ans = []
while stack:
level_ans = []
for i in range(len(stack)):
node = stack.pop(0)
level_ans.append(node.val)
if node.left:
stack.append(node.left)
if node.right:
stack.append(node.right)
ans.append(level_ans)
return ans
226. 翻转二叉树
class Solution:
def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
if root is None:
return None
stack = [root]
while stack:
node = stack.pop()
if node.right:
stack.append(node.right)
if node.left:
stack.append(node.left)
temp = node.left
node.left = node.right
node.right = temp
return root
101. 对称二叉树
class Solution:
def isSymmetric(self, root: Optional[TreeNode]) -> bool:
if root is None:
return True
queue = []
queue.append(root.left)
queue.append(root.right)
symmetric = True
while queue:
left = queue.pop(0)
right =queue.pop(0)
if not left and not right:
continue
if not left or not right or left.val != right.val:
return False
queue.append(left.left)
queue.append(right.right)
queue.append(left.right)
queue.append(right.left)
return True