持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
前言
今天的这道题《二叉树的最大深度》,难度等级依然是简单等级,主要考点就是对二叉树的数据结构的相关理解。
在这之前,我们已经做了关于二叉树数据结构相关的题型,对二叉树数据结构有了基础的认识,再来做这道题的时候,自然就更容易了。
如果你是第一次看二叉树的数据结构,那么也可以通过这道题来认识一下二叉树的一些特性,还有通常处理二叉树的方式。
算法题:二叉树的最大深度
从题目的描述来看,这道题的最终目的是想要得到二叉树一共有多少层,要最下面的那一层的层数。
从给出的示例中来看,提供的二叉树是有可能在一些分叉数据上终止,所以要处理这种中途断掉的情况。
从上一道题中,我们使用了递归的方式来处理二叉树中的值,那么针对这次的题目,我们依然可以利用递归的方式去处理,最后得到正确的结果。
代码展示
下面就是我的代码逻辑了,采用的递归概念解决的。
/**
* 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 l = maxDepth(root.left);
int r = maxDepth(root.right);
return Math.max(l, r) + 1;
}
}
}
执行结果:
递归效率可以,推荐大家使用这种方法来解题。
总结
其实连着做了两道关于二叉树的题目,就发现规律了,要想处理二叉树中的元素,还是要通过递归的方式来处理,这样更方便一些。