2진 트리에서 모든 노드가 같은 값을 가지고 있는지
확인하는 프로그램을 짜시오.
문제 풀이
leetcode에서는 기본 자료구조를 잘 활용할 수 있도록 다양한 문제를 준다. 이 문제도 트리의 순회문제이다. 순회를 할 때는 재귀를 이용할 수 있고 While문을 이용해서 모든 노드를 탐색할 수 있다. 나는 두가지 방식 모두를 활용해서 문제를 풀어보았다. 재귀를 별로 좋아하진 않은데 while문과 재귀 모두를 짜보게 되면 문제를 한단계 깊게 생각할 수 있어서 좋다.
파이썬 코드
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
# while loop
class Solution:
def isUnivalTree(self, root) -> bool:
node_list = [root]
while node_list:
cnode = node_list.pop()
if cnode.val == root.val:
if cnode.left: node_list.append(cnode.left)
if cnode.right: node_list.append(cnode.right)
else:
return False
return True
# Recursion
class Solution:
def isUnivalTree(self, root) -> bool:
if root:
if root.left:
if root.val != root.left.val:
return False
if root.right:
if root.val != root.right.val:
return False
else:
return True
return self.isUnivalTree(root.left) and self.isUnivalTree(root.right)
if __name__ == "__main__":
root = TreeNode(1)
root.left = TreeNode(1)
root.right = TreeNode(1)
lnode = root.left
rnode = root.right
lnode.left = TreeNode(1)
lnode.right = TreeNode(1)
rnode.right = TreeNode(1)
s = Solution()
print(s.isUnivalTree(root))
|
cs |
'온라인 코딩 테스트 문제 풀이 > LeetCode 문제 풀이' 카테고리의 다른 글
Python으로 푸는 LeetCode 938. Range Sum of BST (Easy) (0) | 2019.06.14 |
---|---|
Python으로 푸는 LeetCode 506. Relative Ranks (Easy) (0) | 2019.05.16 |
Python으로 푸는 LeetCode 744. Find Smallest Letter Greater Than Target (Easy) (0) | 2019.05.15 |
Python으로 푸는 LeetCode 599. Minimum Index Sum of Two Lists (Easy) (0) | 2019.05.07 |