-
Notifications
You must be signed in to change notification settings - Fork 0
104. Maximum Depth of Binary Tree #22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
fhiyo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
良いと思います!
一応、BFSはキューにdepthを入れなくても書けることを確認してもよいかもです
| - DFS | ||
| - 左部分木と右部分木のdepthのmaxを取って1を追加すれば良さそう | ||
| - 帰りがけで計算したいので再帰で書きたいところ | ||
| - 再帰の深さが最大10^4になるのが気になるが、recursionlimitが550000に設定されているので大丈夫そう |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
むしろ、私の感覚は逆で、「この環境では大丈夫」なコードは可能ならば避けたいです。いつ、自分の足を撃ち抜くか分からないからです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
たしかにそうですね。ちょっと感覚をアップデートします。
| node, depth = nodes_to_visit.popleft() | ||
| if not node: continue | ||
| max_depth = max(max_depth, depth) | ||
| nodes_to_visit.append((node.left, depth + 1)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
自分ならnode.leftがNoneのときはnodes_to_visitに入れないですかね。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これ、良し悪しで None が入らないとすると、root が None でないことも確認する必要がありますね。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
たしかに、そっちもなおさないとですね。
| if node.right: | ||
| nodes_to_visit.append(node.right) | ||
|
|
||
| return max_depth |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ただの感想ですみませんが、この選択肢なかったので勉強になりました🙏
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
私もご指摘いただいたのですが,
pop後にnodeがNoneかどうかを確認する方法もありますね.
https://discord.com/channels/1084280443945353267/1218740927120674977/1259562704201318492
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@NobukiFukui
レビューありがとうございます。
こちらのキューにdepthを入れない方のBFSの書き方だと、nodeがNoneの場合はキューに入れてはだめな気がしています。
| def maxDepth(self, root: Optional[TreeNode]) -> int: | ||
| if not root: | ||
| return 0 | ||
| return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
遅くなってしまい申し訳ございませんが,確認いたしました.
全般的によくかけていると思います
再帰の部分ですが,私は左の木の深さと右の木の深さを明示して書いてました.
(どっちが見やすいですかね・・?)
left_depth = self.maxDepth(root.left)
right_depth = self.maxDepth(root.right)
depth = max(left_depth, right_depth) + 1
return depthThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
左の木の深さと右の木の深さを明示して書いても見やすいですね。ありがとうございます。
問題へのリンク
https://leetcode.com/problems/maximum-depth-of-binary-tree/description/
次に解く問題
111. Minimum Depth of Binary Tree
README.mdへ頭の中の言語化と記録をしています。