가장 인기 있는 질문 100의 질문 104:
class Solution {
public int maxDepth(TreeNode root) {
//当root为null时,二叉树长度为0
if(root == null){
return 0;
}
//当root左右子树都不为null,整棵树最大长度为左右子树长度的最大值+1;
return 1 + Math.max(maxDepth(root.left),maxDepth(root.right));
}
}
아이디어 분석: 이런 종류의 문제를 할 때 큰 문제를 작은 문제로 바꾸는 법을 배워야 합니다. 예를 들어 이 문제에서 이진 트리의 최대 깊이를 묻는 경우 최대 깊이를 찾는 것으로 바꿀 수 있습니다 of its subtree + 1, 그것의 subtree가 leaf node일 때 depth는 1이고, subtree가 비어있을 때 depth는 0이다.
그러나 왼쪽 트리의 깊이는 오른쪽 트리의 깊이와 중첩될 수 없으므로 최대값을 취해야 하며 재귀를 사용하여 해결할 수 있습니다.