1.第一题:
这道题的思路还是利用队列进行自上而下的层次遍历,最后将结果逆转就可以了,思路挺简单的:
class Solution:
def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:
if root==None:
return []
queue=collections.deque()
res=[]
queue.append(root)
while queue:
memo=[]
for i in range(len(queue)):
node=queue.popleft()
memo.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(memo)
res.reverse()
return res
2.第二题:
这道题重点是在判断最小深度的情况,作为最小深度的节点是叶子节点,左孩子和右孩子都为空。代码如下:
class Solution:
def minDepth(self, root: TreeNode) -> int:
if root==None:
return 0
queue=collections.deque()
res=1
queue.append(root)
while queue:
for i in range(len(queue)):
node=queue.popleft()
if node.left==None and node.right==None:
return res
else:
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res+=1
return res