两种方式实现:1. DFS(递归)2. BFS(队列)
# 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:
#DFS
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
depth = self.getDepth(root,0)
return depth
def getDepth(self, root,depth):
if not root:
return 0
return 1+max(self.getDepth(root.left,depth+1),self.getDepth(root.right,depth+1))
#BFS
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
data = []
data.append(root)
ind = 0
depth = 0
count = 1
new_count = 0
while ind+1<=len(data):#队列非空
# 出队
depth+=1
while count>0:
#出栈
node = data[ind]
ind+=1
count-=1
if node.left:
data.append(node.left)
new_count+=1
if node.right:
data.append(node.right)
new_count+=1
count=new_count
new_count=0
return depth