📅  最后修改于: 2023-12-03 15:40:00.907000             🧑  作者: Mango
二叉树是一种树形数据结构,每个节点最多只有两个子节点,分别为左子节点和右子节点。这使得二叉树在计算机科学领域非常有用,因为它的结构可以被用于存储和查找信息。
问题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为二叉树中节点的数量。