Conversation
There was a problem hiding this comment.
関数内で使う変数は、関数の定義の前に書いてあった方が個人的には読みやすいです。
There was a problem hiding this comment.
ありがとうございます、ご指摘の通りですね。
今回は関数の中でnonlocalでpreorder_indexにアクセスしたり、ハッシュマップを使っているので余計そうかもしれません。
再帰のstackを利用した解解法を追記
There was a problem hiding this comment.
right_count を定義しておきます?
そうすると、
right_count > 0
pre_end - right_count + 1
かなんかでいけます。
There was a problem hiding this comment.
ありがとうございます。確かにそっちの方が読みやすいですね。
right_countを定義した解法を追記しました。
right_countを定義したversionを追記
変数名を更新 (root_val → root_val)
There was a problem hiding this comment.
80行目や85行目の判定からこの条件を満たすものしかstackに積んでないことが分かるのでこの条件は不要だと思いました。
There was a problem hiding this comment.
preorder と inorder のスライスでコピーが作られるので、木が片側に偏っている場合にも O(N2) になると思います。
There was a problem hiding this comment.
preorder と inorder のスライスでコピーが作られるので、木が片側に偏っている場合にも O(N2) になると思います。
There was a problem hiding this comment.
要素の数が多く、どれが何を表すか分かりにくく感じました。 dataclass や namedtuple などを用いて、各要素に名前 (変数名) を付けてあげたほうが良いと思います。
https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/