输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回它的最大深度 3 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路一:递归
二叉树的最大深度就是根节点的深度,根节点的深度为其左右子节点的最大深度加1, 而其左右子树的最大深度也分别是其子树的最大深度+1, 故想到递归。 代码如下,非常简单。
1
2
3
4
5
6
7
|
class Solution {
public int maxDepth(TreeNode root) {
if(root == null) return 0;
return Math.max(maxDepth(root.left),maxDepth(root.right)) + 1;
}
}
|
思路二:迭代
类似层序遍历,利用队列,遍历完一层时,height++ 直至结束。 代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public int maxDepth(TreeNode root){
if (root == null) return 0;
int height = 0;
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()){
int size = queue.size();
while (size > 0){
TreeNode node = queue.poll();
if (node.left != null) queue.add(node.left);
if (node.right != null) queue.add(node.right);
size --;
}
height ++;
}
return height;
}
|