二叉树的最大深度
给定一个二叉树 root ,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例1
输入:root = [3,9,20,null,null,15,7]
输出:3
解题思路
二叉树的最大深度可以通过递归方式来求解。
- 1、如果二叉树为空,返回深度0。
- 2、递归地求解左子树和右子树的最大深度。
- 3、返回左右子树中的最大深度加上当前节点的深度(1)。
Java实现
public class MaxDepthOfBinaryTree {static class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int val) {this.val = val;}}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;}public static void main(String[] args) {// 构造一个二叉树TreeNode root = new TreeNode(1);root.left = new TreeNode(2);root.right = new TreeNode(3);root.left.left = new TreeNode(4);root.left.right = new TreeNode(5);// 创建 MaxDepthOfBinaryTree 对象MaxDepthOfBinaryTree solution = new MaxDepthOfBinaryTree();// 计算二叉树的最大深度int depth = solution.maxDepth(root);// 打印结果System.out.println("Max Depth of Binary Tree: " + depth);}
}
时间空间复杂度
- 时间复杂度:O(n),其中n是二叉树中的节点数,每个节点都需要访问一次。
- 空间复杂度:O(height),其中height是二叉树的高度,递归调用栈的深度。