输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。
v1(冗余版本)
很简单的一个遍历就好了,每一个结点的最大深度都会等于左右子树的最大深度+1,我们写出以下递归
def dps(root):
maxNum = 0
if root is None:
return 0
if root.left is None and root.right is None:
maxNum = 1
if root.left :
maxNum = max(maxNum, dps(root.left)+1)
if root.right :
maxNum = max(maxNum, dps(root.right)+1)
return maxNum
class Solution:
def TreeDepth(self , pRoot: TreeNode) -> int:
return dps(pRoot)
以上写法显然过于复杂,因为root None的时候已经会返回0,那就不需要对左右结点是否为空进行判断,这样可以直接压缩为:
def dps(root):
if root is None:
return 0
maxNum = max(dps(root.left)+1, dps(root.right)+1)
return maxNum
class Solution:
def TreeDepth(self , pRoot: TreeNode) -> int:
return dps(pRoot)