📜  数据结构|二叉树|问题9(1)

📅  最后修改于: 2023-12-03 15:26:09.403000             🧑  作者: Mango

数据结构 | 二叉树 | 问题9

问题描述

给定一个二叉树,求树的深度。深度指的是从根节点到最远叶节点的最长路径上的节点数(不包括根节点)。

解决方案

本问题可以通过递归的方式来解决。对于一个节点,它的深度等于其左右子节点深度的较大值加1。

代码如下:

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def maxDepth(root: TreeNode) -> int:
    if not root:
        return 0
    left_depth = maxDepth(root.left)
    right_depth = maxDepth(root.right)
    return max(left_depth, right_depth) + 1
复杂度分析

该算法的时间复杂度为O(n),其中n为二叉树的节点数。因为每个节点最多访问一次。

该算法的空间复杂度为O(h),其中h为二叉树的高度。最坏情况下,二叉树为链表结构,h=n,最好情况下,h=log(n)。因为函数调用是通过栈实现的,栈的深度为二叉树的高度。

总结

本题是二叉树的经典问题之一,通过递归的方式可以很容易地解决。值得注意的是,在计算一个节点的深度时,需要递归地计算其左右子节点的深度。同时,对于空节点,其深度为0。