JAVA练习305- 二叉树的最大深度 题目概览给定一个二叉树root返回其最大深度。二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。示例 1输入root [3,9,20,null,null,15,7]输出3示例 2输入root [1,null,2]输出2提示树中节点的数量在[0, 10^4]区间内。-100 Node.val 100来源104. 二叉树的最大深度 - 力扣LeetCode解题分析方法一深度优先搜索当前节点就是一层然后只需要知道左边节点和右边节点中的最大深度就能得到答案用递归即可。时间复杂度O(n)空间复杂度O(n)/** * 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; } return Math.max(maxDepth(root.left), maxDepth(root.right)) 1; } }方法二广度优先搜索使用队列一层一层遍历记录层数即可。时间复杂度O(n)空间复杂度O(n)/** * 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; } QueueTreeNode dq new LinkedList(); dq.offer(root); int maxDepth 0; while(!dq.isEmpty()) { int size dq.size(); while(size-- 0) { TreeNode node dq.poll(); if (node.left ! null) { dq.offer(node.left); } if (node.right ! null) { dq.offer(node.right); } } maxDepth; } return maxDepth; } }