def bfs(graph, start_node):
visit = list()
queue = list()
queue.append(start_node)
while queue:
node = queue.pop(0)
if node not in visit:
visit.append(node)
queue.extend(graph[node])
return visit
관련 문제
199. Binary Tree Right Side View
class Solution(object):
def rightSideView(self, root):
def bfs(root, level, rightSide):
if not root: return
if level == len(rightSide): rightSide.append(root.val)
bfs(root.right, level+1, rightSide)
bfs(root.left, level+1, rightSide)
rightSide = []
bfs(root, 0, rightSide)
return rightSide
관련문제2
1161. Maximum Level Sum of a Binary Tree
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def maxLevelSum(self, root):
"""
:type root: TreeNode
:rtype: int
"""
max, level, maxLevel = -float('inf'), 0,0
q= collections.deque()
q.append(root)
while q:
level += 1
sum = 0
for _ in range(len(q)):
node = q.popleft()
sum += node.val
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
if max < sum:
max, maxLevel = sum, level
return maxLevel
dfs 로 해당 문제 다시 풀기
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def maxLevelSum(self, root):
"""
:type root: TreeNode
:rtype: int
"""
def dfs(node, list, level):
if not node: return
if len(list) == level: list.append(node.val)
else: list[level] += node.val
dfs(node.left, list, level + 1)
dfs(node.right, list, level + 1)
list = []
dfs(root, list, 0)
return 1 + list.index(max(list))
'공부용 > 모각코 개인' 카테고리의 다른 글
모각코 6주차 sql2 (0) | 2024.02.15 |
---|---|
모각코 5주차 sql1 (0) | 2024.02.04 |
모각코 4주차 dp (0) | 2024.02.04 |
모각코 3주차 순회문제 (0) | 2024.01.19 |
모각코 1주차 dfs (0) | 2024.01.11 |