LeetCode热题100--104. 二叉树的最大深度--简单
1. 题目
给定一个二叉树 root ,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:3
示例 2:
输入:root = [1,null,2]
输出:2
2. 题解
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public int maxDepth(TreeNode root) {if(root == null){return 0;}else{int left = maxDepth(root.left);int right = maxDepth(root.right);return Math.max(left,right)+1;}}
}
3. 解析
-
public int maxDepth(TreeNode root): 这是主方法,它接受一个类型为TreeNode的参数root。这个参数表示二叉树的根节点。
-
if(root == null){return 0;}: 如果输入的根节点(也就是整个二叉树)不存在,那么返回深度0。在计算最大深度时,空树被认为是深度为0的。
-
else{…}: 如果树不为空,就执行以下操作:
- int left = maxDepth(root.left);: 这行代码递归地计算左子树的最大深度。它通过调用maxDepth()函数并传入根节点的左孩子作为参数来实现。
- int right = maxDepth(root.right);: 这行代码也做类似的事情,但是针对右子树。
- return Math.max(left, right) + 1;: 最后,这个函数返回左子树和右子树的最大深度加上根节点本身的一层深度(由于我们从根节点开始一级一级的深入到叶子节点的位置计算深度,所以这里加1表示在计算完成后,我们要向上走一步回到父节点,因此深度+1。)