바위타는 두루미
4.4 균형확인 본문
728x90
문제
이진 트리가 균형 잡혀있는지 확인하는 함수를 작성하라. 이 문제에서 균형 잡힌 트리란 모든 노드에 대해서 왼쪽 부분 트리의 높이와 오른쪽 부분 트리의 높이의 차이가 최대 하나인 트리를 의미한다.
해결법
재귀적으로 각 노드까지의 높이를 확인하며 1이상의 차이가 나는지 확인하고, 1 이상의 차이가 나지 않는다면 높이를 반환해 나가며 균형이 잡혀있는지 확인한다.
def chkHeight(root):
if root is None :
return -1
left = chkHeight(root.left)
if left == float("Inf") : return float("Inf")
right = chkHeight(root.right)
if right == float("Inf") : return float("Inf")
heightdiff = abs(left-right)
if heightdiff > 1 :
return float("Inf")
else :
return max(left, right) +1
def Solution(root):
return chkHeight(root) != float("Inf")
'Study > Interview준비' 카테고리의 다른 글
4.6 후속자 (0) | 2019.07.28 |
---|---|
4.5 BST 검증 (0) | 2019.07.28 |
4.3 깊이의 리스트 (0) | 2019.07.28 |
4.2 최소 트리 (0) | 2019.07.28 |
3.5 스택정렬 (0) | 2019.07.28 |
Comments