Skip to content

108. Convert Sorted Array to Binary Search Tree#23

Open
n6o wants to merge 1 commit intomainfrom
convert-sorted-array-to-binary-search-tree
Open

108. Convert Sorted Array to Binary Search Tree#23
n6o wants to merge 1 commit intomainfrom
convert-sorted-array-to-binary-search-tree

Conversation

@n6o
Copy link
Copy Markdown
Owner

@n6o n6o commented Feb 28, 2026

今回の問題

Convert Sorted Array to Binary Search Tree - LeetCode

使用言語

Go

次に解く問題

Path Sum - LeetCode

- 重複している値はない
- 出力
- 高さがバランスした2分木
- 二つの木の高さの差が高々1である
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

nit: 部分木

- leetcode にある回答は基本的に同じだった
- mid の取り方でもう一方の構造の木になる
- mid = len / 2
- 0-indexで考えるか1-indexで考えるかの違いと理解した
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

「左側と右側の部分木のそれぞれの頂点数の和が奇数になるとき、そのどちらを1だけ大きくするか」に対応すると思います。
全ての部分木について再帰的に成り立ちます。


- 子の情報をキューに入れるときにチェックする必要があった
- 量が多くなるので、基本は再帰で実装すると思った
- メモリ観点でも再帰の方が少なそう
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

キューによるBFSからスタックによるDFSに変更すると、"jobs" のサイズは $O(\log n)$ になるとおもいます。

@arahi10
Copy link
Copy Markdown

arahi10 commented Mar 1, 2026

GoLongあまり詳しくないので質問するのですが、今回のようにキューとしてスライスを使った場合、スライスのキャパシティは増え続ける、と言う認識で良いでしょうか?
たくさん"jobs = append(jobs, hoge)"したときに、キューとして保持する要素は少ないのに内部の配列が大きくなっていって、メモリ使用量が不必要にかさんだりしないのかな、と疑問に思いました。

@n6o
Copy link
Copy Markdown
Owner Author

n6o commented Mar 1, 2026

ありがとうございます。

go ではスライスを拡大するタイミングで、現在有効な要素についてコピーするため、すでに不要になった分は除外されます。そのため、使われない領域が増え続けるという挙動にはならないという理解をしています。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants