1. 思路
分治法简介:求一个规模为n的问题,先求左边规模大约为n/2的问题,再求右边规模大约为n/2的问题,然后合并左边,右边的解,从而求得最终解。
函数是求二叉树的最大深度,我们不必管函数具体是怎么实现的。
所以最终结果为 max( 头结点左子树的最大深度, 头结点右子树的最大深度)+1
2. 代码
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def TreeDepth(self, pRoot):
# write code here
# 方法1分治法
if pRoot == None: # ----基线条件
return 0
lval = self.TreeDepth(pRoot.left) # 左子树的深度,递归条件,因为它使问题规模减小了
rval = self.TreeDepth(pRoot.right) # 右子树的深度,递归条件,因为它使问题规模减小了
return max(lval,rval) + 1