LC 0104 [E] Maximum Depth of Binary Tree - ALawliet/algorithms GitHub Wiki
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def maxDepth(self, root: Optional[TreeNode]) -> int:
self.maxDepth = 0
def dfs(node, depth):
if not node.left and not node.right:
self.maxDepth = max(self.maxDepth, depth)
if node.left:
dfs(node.left, depth + 1)
if node.right:
dfs(node.right, depth + 1)
if not root: return 0
dfs(root, 1)
return self.maxDepth
def maxDepth(self, root: Optional[TreeNode]) -> int:
if not root:
return 0
L = self.maxDepth(root.left)
R = self.maxDepth(root.right)
return 1 + max(L, R)
def maxDepth(self, root: Optional[TreeNode]) -> int:
if not root: return 0
stack = [ [root, 1] ]
res = 0
while stack:
node, depth = stack.pop()
res = max(res, depth)
if node.left:
stack.append( [node.left, depth + 1] )
if node.right:
stack.append( [node.right, depth + 1] )
return res