Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions Python3/104. Maximum Depth of Binary Tree.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
## Step 1. Initial Solution

- BFSで実装できる

```python
class Solution:
def maxDepth(self, root: Optional[TreeNode]) -> int:
unprocessed_nodes: List[Tuple[TreeNode, int]] = deque([(root, 1)])
max_depth: int = 0
while unprocessed_nodes:
node, depth = unprocessed_nodes.popleft()
if node is None:
continue
max_depth = max(max_depth, depth)
unprocessed_nodes.append((node.left, depth + 1))
unprocessed_nodes.append((node.right, depth + 1))
return max_depth
```

### Complexity Analysis

- 時間計算量:O(n)
- 全ノードを見る
- ループ内の処理は定数時間
- 空間計算量:O(n)

## Step 2. Alternatives

- 再帰を使った方法
- とてもシンプルに書ける

```python
class Solution:
def maxDepth(self, root: Optional[TreeNode]) -> int:
if root is None:
return 0
return 1 + max(self.maxDepth(root.left), self.maxDepth(root.right))
```

- 他にもいくつか読んだが基本的にはBFSかDFSか、Depthをどう保持するか、Noneのチェックをどこで行うか、変数を新しく置くか、くらいの差しかなさそう
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

特に大きな問題はないのですが、読みやすい読みにくい、これは良い悪い、みたいな感情を育てて欲しいので、感情が記録してあるとコメントしやすいですね。

https://docs.google.com/document/d/11HV35ADPo9QxJOpJQ24FcZvtvioli770WWdZZDaLOfg/edit?tab=t.0#heading=h.5h10o8wgz7ah


## Step 3. Final Solution

- 変数名が少し長いがこのくらいが分かりやすいギリギリのラインか

```python
class Solution:
def maxDepth(self, root: Optional[TreeNode]) -> int:
remaining_nodes_and_depths: List[Tuple[TreeNode, int]] = [(root, 1)]
max_depth: int = 0
while remaining_nodes_and_depths:
node, depth = remaining_nodes_and_depths.pop()
if node is None:
continue
max_depth = max(max_depth, depth)
remaining_nodes_and_depths.append((node.left, depth + 1))
remaining_nodes_and_depths.append((node.right, depth + 1))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

特に問題ないと思います。
自分はNoneを入れないように更新する派です

return max_depth
```