Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 모의해킹
- 웹해킹
- java
- HTML Injection
- 모드 설정
- programmers
- 정보시스템
- 써니나타스
- study
- metasploit
- Algorithm
- todo
- hackerrank
- 라우터
- todo List
- Router
- StringBuilder
- stock price
- algotithm
- SQLMap
- ToDoList
- CSRF
- Suninatas
- 미터프리터
- SQL Injection
- 취약점
- leetcode
- wpscan
- meterpreter
- 취약점진단
Archives
- Today
- Total
보안 / 개발 챌린저가 목표
[AlphaGo Study] [LeetCode] [JAVA] 104. Maximum Depth of Binary Tree 본문
Development/Algorithm
[AlphaGo Study] [LeetCode] [JAVA] 104. Maximum Depth of Binary Tree
햄미은서 2020. 9. 22. 15:47
문제 설명
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
제한 사항
A leaf is a node with no children.
입출력 예
Binary tree | result |
[3, 9, 20, null, null, 15, 7] | 3 |
입출력 예 설명
#예제
Given binary tree [3, 9, 20, null, null, 15, 7]. Return its depth = 3.
leetcode.com/problems/maximum-depth-of-binary-tree/
문제를 풀기 전 THINK
- 왼쪽 서브트리의 높이(leftDepth)와 오른쪽 서브트리의 높이(rightDepth)를 구하기 위하여, 순환 함수를 이용하여 각 서브트리의 끝까지 방문할 수 있도록 한다.
- 방문 순서는 leftDepth(root.left) 호출이 먼저 이루어졌기 때문에 왼쪽 먼저 끝까지 간다. 그 후 오른쪽 끝까지 방문한다.
- 이 때, 단말 노드를 만났을 때 순환이 끝나게 된다.
- 마지막에 +1을 해주는 이유는 트리 끝까지 내려가 있을 때, 한 단계 더 내려가서 살펴보려고 했는데 root == null 인 상황이 되었다. 이 때, 자식이 없으므로 leftDepth, rightDepth는 둘 다 0이 된다. ⇒ 내 자식들은 존재하지 않지만, 나는 존재한다! 따라서 "나"는 높이를 구할 때 하나의 수치로 환산될 수 있다.
* 단말 노드란? 자식이 없는 노드.
→ 자식 노드가 있나 살펴보러 내려갔는데 아무 것도 없을 때, root == null 을 사용하여 순환을 끝낸다.
→ 자식 노드가 없으면 return 0을 한다.
나의 Solution
public class MaximumDepthBinaryTree {
int maxDepth(TreeNode root) {
int leftDepth, rightDepth;
if(root == null) {
return 0;
} else {
leftDepth = maxDepth(root.left);
rightDepth = maxDepth(root.right);
int resultDepth = Math.max(leftDepth, rightDepth);
// 자식들이 존재하지 않아도 나는 존재할 수 있으니 +1
return resultDepth + 1;
}
}
}
'Development > Algorithm' 카테고리의 다른 글
[AlphaGo Study] [LeetCode] [JAVA] 448. Find All Numbers Disappeared in an Array (0) | 2020.09.28 |
---|---|
[AlphaGo Study] [LeetCode] [JAVA] 21. Merge Two Sorted Lists (0) | 2020.09.24 |
[AlphaGo Study] [HackerRank] [JAVA] Strange Counter (0) | 2020.09.17 |
[AlphaGo Study] [HackerRank] [JAVA] Halloween Sale (0) | 2020.09.14 |
[AlphaGo Study] [Programmers] [JAVA] 기능개발 (0) | 2020.09.10 |
Comments