使用dfs(深度优先)
使用递归的平衡因子的方法:9(0,0);15(0,0);7(0,0);20(1,1);3(1,2);很显然还需要+1,才可以实现树的深度记录。
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
leftnode=self.maxDepth(root.left)
rightnode=self.maxDepth(root.right)
return max(leftnode,rightnode)+1
非递归的方式:
class Solution: def maxDepth(self, root: TreeNode) -> int: if root == None: return 0 stack = [(root,1)] while stack: (node,level) = stack.pop(0) if node.left: stack.append((node.left,level+1)) if node.right: stack.append((node.right,level+1)) return level
使用bfs(广度优先)
class Solution: def maxDepth(self, root: TreeNode) -> int: if not root: return 0 queue, res = [root], 0 while queue: tmp = [] for node in queue: if node.left: tmp.append(node.left) if node.right: tmp.append(node.right) queue = tmp res += 1 return res