github : https://github.com/CircleZ3791117
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'circlezhou'
'''
Description:
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.
'''
'''
Solution: using DFS
'''
# Definition for a binary tree node
class TreeNode(object):
def __init__(self, x):
self.left = None
self.right = None
self.val = x
class Solution:
def maxDepth(self, root):
"""
:type root: TreeNode
:rytype int
"""
if root == None:
return 0
i = 1
res = []
def dfs(root, res, i):
if root == None:
return
if len(res) < i:
res.append(i)
dfs(root.left, res, i+1)
dfs(root.right, res, i+1)
dfs(root, res, i)
return res[-1]
'''
Solution: BFS
'''
class Solution:
def maxDepth(self, root):
if root == None:
return 0
queue = []
layers = 0
queue.append(root)
while(len(queue) != 0):
tmp = []
while(len(queue) != 0):
head = queue.pop(0)
if head.left != None:
tmp.append(head.left)
if head.right != None:
tmp.append(head.right)
queue = tmp
layers += 1
return layers
'''
Better Solution: one line
'''
class Solution(object):
def maxDepth(self, root):
return 1 + max(map(self.maxDepth, (root.left, root.right))) if root else 0
本文介绍了一种求解二叉树最大深度的算法,并提供了三种实现方式:递归深度优先搜索(DFS)、广度优先搜索(BFS)以及一种更简洁的递归解决方案。这些方法均可用于确定从根节点到最远叶子节点的最长路径上的节点数。

被折叠的 条评论
为什么被折叠?



