1.编辑器
我使用的是win10+vscode+leetcode+python3
环境配置参见我的博客:
链接
2.第一百零四题
(1)题目
英文:
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
Note: A leaf is a node with no children.
中文:
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree
(2)解法
① 使用DFS(depth first search)(耗时:64ms,内存:16M)
应用了回溯和递归
class Solution:
def maxDepth(self, root: TreeNode) -> int:
result = 0
def maxdepthsearch(root):
if root== None:
return 0
depth1 = maxdepthsearch(root.left)
depth2 = maxdepthsearch(root.right)
depth = max(depth1,depth2)+1
return depth
result = maxdepthsearch(root)
return result
② 使用队列BFS(breadth first search)
(耗时:52ms,内存:14.8M)
应用了队列
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if root is None:
return 0
queue = collections.deque()
queue.append(root)
lenth = 0
while queue:
lenth += 1
for i in range(len(queue)):
node = queue.popleft()
if node.left is not None:
queue.append(node.left)
if node.right is not None:
queue.append(node.right)
return lenth
注意:
1.collections.deque()
创建的队列的形式是这样的:deque([])。
2.node = queue.popleft()
node是pop出来的值,而queue是pop掉最左边值后的新队列。
有关DFS和BFS的区别,这篇博客写得很生动:
博客