DFS
def maxDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
return max(self.maxDepth(root.right),self.maxDepth(root.left))+1
BFS
def maxDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
stack = [root]
depth = 0
if not root:
return depth
while stack:
for i in range(len(stack)):
x = stack.pop(0)
if x.left:
stack.append(x.left)
if x.right:
stack.append(x.right)
depth += 1
return depth