思路
- 涉及到树的遍历都会先想到递归。
- 如果当前节点为空,则说明当前层级已经是最后一层,直接返回传入的层级数;
- 如果当前节点不为空,则递归当前节点的左节点深度,因为子节点为下一层级,所以传入层级数为当前层级数+1,递归右节点同理;
- 比较左节点和右节点的大小,返回最大值。
代码
/**
* 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) {
return maxDepthOfTree(root, 0);
}
public int maxDepthOfTree(TreeNode root, int level) {
if (root == null) return level;
int left = maxDepthOfTree(root.left, level + 1);
int right = maxDepthOfTree(root.right, level + 1);
return Math.max(left, right);
}
}