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.
Example:
Given binary tree [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its depth = 3.
返回树的深度,可以用DFS或者BFS算法,都很简单.
DFS:用maxdepth记录最大深度
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if root is None: return 0
stack=[(root,1)]
maxdepth=1
while stack:
node,depth = stack.pop()
if depth>maxdepth:
maxdepth=depth
if node.left:
stack.append((node.left, depth+1))
if node.right:
stack.append((node.right, depth+1))
return maxdepth
BFS:
class Solution(object):
def maxDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
depth = 0
level = [root] if root else []
while level:
depth += 1
queue = []
for el in level:
if el.left:
queue.append(el.left)
if el.right:
queue.append(el.right)
level = queue
return depth