您的位置:首页 > 其它

二叉树的最大深度

2016-04-19 22:07 246 查看
从现在起,我将用几节的内容讲解递归的相关题目,因为递归的方法是非常重要的,也是面试常问到的问题。

前面,我们已经对递归的基本思想和用法做过归纳,详见:点击打开链接,也解决过相关问题。这里再总结一下,递归就是要在问题中找两个东西:

1. 问题由小问题到大问题是如何“升级”的

2. 递归何时“触底”

那么现在来看这样一个问题:求二叉树的最大深度

思路非常简单,一棵二叉树,它的最大深度就是左右子树深度的最大值加1,这是他由子问题(左右子树深度)升级的过程。另外,需要注意的是,当二叉树为空,它的深度当然是0,这是它“触底”的条件

行了,代码照这个写就行,我们发现用Python写出来的代码几乎跟自然语言是一样的,非常简单,如下:

"""
Definition of TreeNode:
class TreeNode:
def __init__(self, val):
self.val = val
self.left, self.right = None, None
"""
class Solution:
"""
@param root: The root of binary tree.
@return: An integer
"""
def maxDepth(self, root):
if root is None:
return 0
return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1
# write your code here这种逻辑以后还会遇到很多,我不多做解释了,因为很简单,初学者的话,多练几个,也就熟了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归 二叉树