目录
给定一个二叉树
root
,返回其最大深度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:3示例 2:
输入:root = [1,null,2] 输出:2提示:
- 树中节点的数量在
[0, 104]
区间内。-100 <= Node.val <= 100
题解:
- 我们要知道递归的核心是只关注这一层要干什么,返回什么,至于我的下一层不需要管
- 标签:DFS 深度搜索
- 终止条件:当前节点为空
- 本层返回值:节点为空时返回 0,节点不为空时则分别求左右子树的高度的最大值(递归调用函数,至于它往后怎么递归执行我们不管,本层只需要调用函数求出当前的左右子树最大高度),同时加 1 表示当前节点的高度,返回该值
代码:
/** * 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; //递归遍历左子树 int left=maxDepth(root.left); // 递归遍历右子树 int right=maxDepth(root.right); // return Math.max(left,right)+1; } }
运行结果: