题目
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
思路
二叉树的深度要包含根节点,根节点的深度为1。
所以二叉树的深度为左右子树深度的最大值加1。
利用递归实现。
如果根节点为空,深度为0。
代码
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
leftdeep = self.maxDepth(root.left)
rightdeep = self.maxDepth(root.right)
res = leftdeep+1 if leftdeep >= rightdeep else rightdeep+1
return res
复杂度
时间复杂度 O(N) : N为树的节点数量,计算树的深度需要遍历所有节点。
空间复杂度 O(N) : 最差情况下(当树退化为链表时),递归深度可达到 N 。