# 代码随想录训练营第III期--015--python
# 膝盖完犊子了,等恢复了要减重+练习动物流提高身体协调能力
# 今天的题都不会,都是抄一遍答案
# 层序遍历 10
def levelOrder(root):
if not root:
return []
queue = [root]# 根节点入队
order = []
while queue:
level = []
size = len(queue)# 当队列不为空时,求出当前队列长度S
for _ in range(size):
curr = queue.pop(0)
level.append(curr.val)
if curr.left:
queue.append(curr.left)
if curr.right:
queue.append(curr.right)
if level:
order.append(level)
return order
# 226.翻转二叉树
# 最开始搞错了,直接套用的递归模板,没考虑清楚
class Solution:
def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
# if not root:
# return None
# def inv(root):
# if not root:
# return None
# if root.left is not None and root.right is not None:
# root.left, root.right = root.right, root.left
# inv(root.left)
# inv(root.right)
# inv(root)
# return root
if not root:
return None
root.left, root.right = root.right, root.left
self.invertTree(root.left)
self.invertTree(root.right)
return root
# 101.对称二叉树 2
# 深层的镜像对称,没考虑清楚
# 参考了答案的逻辑,这样看起来更容易理解
def isSymmetric(self, root: Optional[TreeNode]) -> bool:
if not root:
return True
def dfs(left, right):
if left is None and right is None:
return True
if (left is None and right is not None) or (left is not None and right is None):
return False
if left.val != right.val:
return False
return dfs(left.left, right.right) and dfs(left.right, right.left)
return dfs(root.left, root.right)
代码随想录训练营第III期--015--python
最新推荐文章于 2024-07-23 14:36:35 发布