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.
For example:
Given binary tree [3,9,20,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its depth = 3.
思路:本题要求的是二叉树的深度,容易想到的是需要进行递归遍历,问题在于递归出口和循环体,一般来说出口应该是容易找到的,只要节点为NULL即为出口,循环体是一个值得讨论的问题。我们可以以任意节点为准则,求出此节点的左树和右树的深度由于向上递归,最后可以求得根节点左树与右树的深度值,再选取其中较大值作为结果返回。值得注意的是任意节点的深度值为1+左右深度最大值。
python知识:python三元计算符:实现类似于a:a>b?b的功能为:a if a>b else b值得注意的是这个三元运算符的优先级较低,在与加法进行运算时会先运算加法如:1+a if a>b else b 则会先计算1+a所以要括号括起来。
max()函数求两数较大值。
代码:
class Solution:
def maxDepth(self, root):
if not root: return 0
depthl=self.maxDepth(root.left)
depthr=self.maxDepth(root.right)
return 1 + (depthl if depthl>depthr else depthr)
使用max()的一行代码:
class Solution:
def maxDepth(self, root):
if not root: return 0
return 1+max(self.maxDepth(root.left),self.maxDepth(root.right))