返回

力扣 (LeetCode)-104. 二叉树的最大深度:巧妙解法让刷题更轻松!

前端

二叉树是一种重要的数据结构,它在计算机科学中有着广泛的应用。二叉树的最大深度是指从根节点到最深叶节点的最长路径上的节点数。

在LeetCode 104.二叉树的最大深度题中,给你一棵二叉树,你需要找到它的最大深度。二叉树的最大深度可以表示为从根节点到最深叶节点的最长路径上的节点数。

要解开这道题,我们可以使用一种称为深度优先搜索(DFS)的算法。深度优先搜索是一种遍历树结构的算法,它通过递归地访问节点及其子节点来遍历树。

深度优先搜索算法的步骤如下:

  1. 从根节点开始。
  2. 访问根节点。
  3. 递归地访问根节点的所有子节点。
  4. 返回到根节点。
  5. 重复步骤2-4,直到所有节点都被访问。

使用深度优先搜索算法,我们可以很容易地找到二叉树的最大深度。我们只需在访问每个节点时,将当前深度与最大深度进行比较,如果当前深度大于最大深度,则更新最大深度。

class Solution {
    int maxDepth = 0;

    public int maxDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }

        dfs(root, 1);

        return maxDepth;
    }

    private void dfs(TreeNode node, int depth) {
        if (node == null) {
            return;
        }

        maxDepth = Math.max(maxDepth, depth);

        dfs(node.left, depth + 1);
        dfs(node.right, depth + 1);
    }
}

上面的代码实现了深度优先搜索算法来求解二叉树的最大深度。我们首先在类Solution中定义了一个整型变量maxDepth,用于记录最大深度。然后,我们定义了一个名为maxDepth的函数,它接收两个参数:根节点root和当前深度depth。

在maxDepth函数中,我们首先检查根节点是否为null。如果是,则函数返回0。否则,我们使用递归的方式遍历树。我们首先访问根节点,然后递归地访问根节点的所有子节点。在访问每个节点时,我们将当前深度与最大深度进行比较,如果当前深度大于最大深度,则更新最大深度。

最后,我们返回最大深度。

使用上面的代码,我们可以轻松地解开LeetCode 104.二叉树的最大深度题。深度优先搜索算法是一种非常强大的算法,它可以用来解决各种各样的树结构问题。掌握了深度优先搜索算法,你就能在LeetCode上轻松地解决更多的算法题目。

希望这篇文章对您有所帮助,如果您有任何问题,请随时留言。