leetcode刷题15天
1.第一题:
菜鸡只会用递归来写,首先判断根节点的左右子树是不是对称的,若不是对称的则返回False,否则判断左子树的左孩子和右子树的右孩子是否对称,左子树的右孩子和右子树的左孩子是否对称,这样依次递归,代码如下:
class Solution:
def isSymmetric(self, root: TreeNode) -> bool:
def check(node1,node2):
if node1==None and node2==None:
return True
if node1==None or node2==None:
return False
if node1.val!=node2.val:
return False
else:
return check(node1.left,node2.right) and check(node1.right,node2.left)
return check(root,root)
2.第二题:
这道题使用广度遍历来做,很简单,用python的双端队列:代码如下:
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
queue=collections.deque()#双端队列
queue.append(root)
result=0
while queue:
result+=1
for i in range(len(queue)):#将一层的所有子节点都加入到队列中
node=queue.popleft()
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return result