이진 트리가 있다고 가정합니다. 모든 잎이 같은 수준에 있는지 확인해야 합니다.
따라서 입력이 다음과 같으면
그러면 출력은 True
가 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
dfs() 함수를 정의합니다. 이것은 뿌리를 내릴 것입니다, d
-
루트가 null이 아니면
-
루트의 왼쪽이 null이고 루트의 오른쪽이 null이면
-
깊이 끝에 d 삽입
-
-
그렇지 않으면
-
dfs(루트 왼쪽, d + 1)
-
dfs(루트의 오른쪽, d + 1)
-
-
-
기본 방법에서 다음을 수행하십시오 -
-
깊이 :=새 목록
-
dfs(루트, 0)
-
깊이에 값이 하나만 있으면 true를 반환합니다.
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class TreeNode: def __init__(self, value): self.val = value self.left = None self.right = None class Solution: def solve(self, root): self.depth = [] self.dfs(root, 0) return len(set(self.depth)) == 1 def dfs(self, root, depth): if root: if not root.left and not root.right: self.depth.append(depth) else: self.dfs(root.left, depth + 1) self.dfs(root.right, depth + 1) ob = Solution() root = TreeNode(5) root.left = TreeNode(4) root.left.left = TreeNode(2) root.right = TreeNode(10) root.right.left = TreeNode(7) root.right.right = TreeNode(15) print(ob.solve(root))
입력
root = TreeNode(5) root.left = TreeNode(4) root.left.left = TreeNode(2) root.right = TreeNode(10) root.right.left = TreeNode(7) root.right.right = TreeNode(15)
출력
True