Skip to content

Commit 8fefbeb

Browse files
committed
feat: Solve binary-tree-level-order-traversal problem
1 parent 8a33c86 commit 8fefbeb

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
from collections import deque
8+
9+
class Solution:
10+
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
11+
if not root:
12+
return []
13+
14+
queue = deque([root])
15+
result = []
16+
while queue:
17+
tmp = []
18+
for _ in range(len(queue)):
19+
node = queue.popleft()
20+
tmp.append(node.val)
21+
22+
if node.left:
23+
queue.append(node.left)
24+
if node.right:
25+
queue.append(node.right)
26+
result.append(tmp)
27+
return result

โ€Žgraph-valid-tree/hu6r1s.pyโ€Ž

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
if len(edges) != n - 1:
2+
return False
3+
4+
graph = [[] for _ in range(n)]
5+
for node, adj in edges:
6+
graph[node].append(adj)
7+
graph[adj].append(node)
8+
9+
visited = set()
10+
11+
def dfs(node):
12+
visited.add(node)
13+
for adj in graph[node]:
14+
if adj not in visited:
15+
dfs(adj)
16+
17+
dfs(0)
18+
return len(visited) == n
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
from collections import deque
2+
3+
class Solution:
4+
"""
5+
๋ฌธ์ œ๋ฅผ ๋ณด๋‹ˆ ๋ฐ”๋กœ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์ด ๋– ์˜ฌ๋ผ์„œ bfs ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„
6+
๋ฐฑ์ค€ ๋ฌธ์ œ์—์„œ ๋งŽ์ด ํ’€์–ด๋ณด๋˜๊ฑด๋ฐ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๋˜์–ด ๊ณ„์† ํ—ท๊ฐˆ๋ ธ์Œ
7+
๋‹ค์‹œ ๊ณต๋ถ€ํ•ด์•ผํ•จ
8+
"""
9+
def numIslands(self, grid: List[List[str]]) -> int:
10+
def bfs(grid, i, j):
11+
queue = deque()
12+
queue.append([i, j])
13+
grid[i][j] = "0"
14+
while queue:
15+
x, y = queue.popleft()
16+
for k in range(4):
17+
nx = x + dx[k]
18+
ny = y + dy[k]
19+
if nx < 0 or nx >= n or ny < 0 or ny >= m:
20+
continue
21+
if grid[nx][ny] == "0":
22+
continue
23+
grid[nx][ny] = "0"
24+
queue.append([nx, ny])
25+
26+
27+
dx = [-1, 1, 0, 0]
28+
dy = [0, 0, -1, 1]
29+
n, m = len(grid), len(grid[0])
30+
cnt = 0
31+
for i in range(n):
32+
for j in range(m):
33+
if grid[i][j] == "1":
34+
bfs(grid, i, j)
35+
cnt += 1
36+
return cnt

0 commit comments

Comments
ย (0)