매일 한 문제-검지 Offer 55 - I. 두 갈래 나무의 깊이
제목 정보
예:
두 갈래 나무를 정해라
[3,9,20,null,null,15,7]
, 3
/ \
9 20
/ \
15 7
최대 깊이 3을 반환합니다.
주의하다
1. <= 10000
문제 풀이 사고방식
본제의 난점
트리의 스트리밍 방식은 전체적으로 깊이 우선 검색(DFS), 폭 우선 검색(BFS)으로 나뉜다.
나무의 깊이를 구하려면 나무의 모든 노드를 두루 돌아다녀야 한다.
구체적인 사고방식
두 갈래 나무의 층차 반복/광도 우선 검색은 종종 대기열을 이용하여 이루어진다.
한 층을 훑어볼 때마다 계수기 +1, 훑어볼 때까지 나무의 깊이를 얻을 수 있다.
주의하다
코드
class Solution {
public int maxDepth(TreeNode root) {
if(root == null){
return 0;
}
// queue
Queue queue = new LinkedList<>();
queue.add(root);
int res = 0;
while(!queue.isEmpty()){
// : queue node , queue;
for(int i = queue.size();i > 0 ; i--){
TreeNode t = queue.poll();
if(t.left != null){
queue.add(t.left);
}
if(t.right != null){
queue.add(t.right);
}
}
res++;
}
return res;
}
}
복잡도 분석:
queue
N/2 노드를 동시에 저장..기타 우수 답변
문제 풀이 사고방식
이 트리의 깊이와 왼쪽 (오른쪽) 하위 트리의 깊이 사이의 관계입니다.분명히 이 나무의 깊이는 왼쪽 나무의 깊이와 오른쪽 나무의 깊이의 최대치 +1과 같다.
코드
class Solution {
public int maxDepth(TreeNode root) {
if(root == null) return 0;
return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.