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

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

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

简介

二叉树是一种树形数据结构,每个节点最多只有两个子节点,分别为左子节点和右子节点。这使得二叉树在计算机科学领域非常有用,因为它的结构可以被用于存储和查找信息。

问题1是二叉树中最简单的问题之一,也被称为“求深度”。给定一棵二叉树,计算它的深度,即根节点到最深叶子节点的距离。

实现

在实现这个问题之前,首先需要了解二叉树的定义以及深度计算的原理。接下来是一个简单的二叉树节点的定义:

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
        val = x;
    }
}

在这个问题中,我们定义二叉树的深度为根节点到最深叶子节点的距离。因此,对于每个节点,我们需要计算其子树的深度,然后将较大的子树深度加1,即为该节点的深度。

public int maxDepth(TreeNode root) {
    if (root == null) {
        return 0;
    }
    int leftDepth = maxDepth(root.left);
    int rightDepth = maxDepth(root.right);
    return Math.max(leftDepth, rightDepth) + 1;
}
性能

该算法的时间复杂度为O(n),其中n为二叉树中节点的数量。由于每个节点都要遍历一遍,并且只能遍历一遍,因此时间复杂度不能更好。空间复杂度取决于递归的深度,最坏情况下是O(n),其中n为二叉树中节点的数量。