题目描述 题目分析 题目非常简单,就是判断树的最大深度,可以使用深度优先算法或广度优先算法 解法分析 深度优先,递归遍历子结点,比较左子树和右子树的最大结点后 +1广度优先,使用队列,如果有子结点就将子结点放入队列中,然后弹出自身,循环操作直到队列为空 代码 深度优先 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public int maxDepth(TreeNode root) { if(root == null) return 0; return Math.max(maxDepth(root.left), maxDepth(root.right))+1; } } 广度优先 class Solution { public int maxDepth(TreeNode root) { if (root == null) { return 0; } // 初始化队列 Queue<TreeNode> queue = new LinkedList<TreeNode>(); // 将根结点放入队列中 queue.offer(root); // 累计层数 int ans = 0; // 循环直到队列为空 while (!queue.isEmpty()) { // 当前层的结点数 int size = queue.size(); while (size > 0) { // 获取队列第一个结点 TreeNode node = queue.poll(); // 查看该结点是否有子结点,如果有就入队 if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } // 继续该层的下一个结点 size--; } // 累计层数 ans++; } return ans; } } 作者:LeetCode-Solution 链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/solution/er-cha-shu-de-zui-da-shen-du-by-leetcode-solution/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。