https://leetcode.com/problems/diameter-of-binary-tree/
<문제>
이진트리에서 두 노드간 가장 긴 경로의 길이를 출력하라.
<예시>
1
/ \
2 3
/ \
4 5
Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3].
참고한 코드
class Solution:
def diameterOfBinaryTree(self, root: TreeNode) -> int:
def height(root):
nonlocal diameter
if not root:
return 0
left = height(root.left)
right = height(root.right)
diameter = max(diameter, left+right)
# max(left sub tree의 depth, right sub tree의 depth) + 1 (자식과 부모의 거리)
return max(left, right)+1
diameter = 0
height(root)
return diameter
코드 추천 ... ! 👍
'다전공_컴퓨터공학 > 알고리즘 문제풀이' 카테고리의 다른 글
[파이썬 알고리즘] 14장 - BST 합 (traversal 개념) (0) | 2021.01.15 |
---|---|
[알고리즘] 다익스트라 정의 & 문제⭐⭐ (0) | 2021.01.15 |
[파이썬 알고리즘] 12장 - 조합의 합 (leetcode 39) (0) | 2020.12.26 |
[파이썬 알고리즘] 12장 - 조합 (leetcode 77) ⭐ (0) | 2020.12.25 |
[파이썬 알고리즘] 12장 - 순열 (leetcode 46) ⭐ (0) | 2020.12.25 |