目录
100. 相同的树
判断两棵树是否相同
def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
if not p and not q:
return True
elif p and not q:
return False
elif q and not p:
return False
else:
if p.val == q.val:
return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)
else:
return False
101. 对称二叉树
判断一棵树是否为镜像对称
def judge(lft, rgt) -> bool:
if not lft and not rgt:
return True
elif not lft and rgt:
return False
elif lft and not rgt:
return False
elif lft.val == rgt.val:
return judge(lft.left, rgt.right) and judge(lft.right, rgt.left)
else:
return False
if not root:
return True
return judge(root.left, root.right)
104. 二叉树的最大深度
计算二叉树的最大深度
def maxDepth(self, root: TreeNode) -> int:
if root == None:
return 0
else:
return max(self.maxDepth(root.left), self.maxDepth(root.right))+1
107. 二叉树的层次遍历
由下至上按照层级遍历二叉树
def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
result = []
layer = [root]
val = [root.val]
while len(val) != 0:
result.append(val)
val = []
layer1 = layer
layer = []
for i in layer1:
if i.left:
layer.append(i.left)
val.append(i.left.val)
if i.right:
layer.append(i.right)
val.append(i.right.val)
result.reverse()
return result