102. Binary Tree Level Order Traversal#25
Conversation
|
|
||
| vector<vector<int>> levelOrder(TreeNode* root) { | ||
| int level = 0; | ||
| vector<vector<int>> vvi; |
There was a problem hiding this comment.
とりあえず付けたてきとうな名前ですね。一応 vector<vector< int >> を短くしてvviみたいな感じです。step2でnodesという名前にrenameしています。
| vector<vector<int>> result; | ||
| if (!root) return result; | ||
|
|
||
| queue<TreeNode*> nodes; |
There was a problem hiding this comment.
kitano-kazuki/leetcode#21 (comment)
キューに異なる階層のノードが入っていて、かつそれらの深さはキュー外で管理されている、という構造がちょっと違和感がありました。私なら、いま見る階層と、次に見る階層を分けてスワップします。dequeが不要になるのもメリットです。
BFSでは, 階層ごとに配列を用意する方法があります。最近は読みやすいので自分もこっちを使っています
There was a problem hiding this comment.
@hemispherium さん
参考までにお聞きしたいのですが、
キューに異なる階層のノードが入っていて、かつそれらの深さはキュー外で管理されている
という書き方を最初に見たのはどこか覚えていますか?
| */ | ||
| class Solution { | ||
| public: | ||
| void dfs(TreeNode* root, int level, vector<vector<int>>& vvi) { |
There was a problem hiding this comment.
vvi という変数名は vector vector int の略でしょうか。変数名から、中にどのような値が含まれているのか想像しにくく感じました。
こちらのコメントをご参照ください。
#10 (comment)
また、型名をそのまま変数名に含めても、読み手にとって得られる情報はあまり増えないように感じました。変数名には、どのような値が格納されているかが分かる名前を付けると、より読みやすくなると思います。
nodes_by_level はいかがでしょうか?
There was a problem hiding this comment.
そうですね、承知しました。nodes_by_levelのような名前を付けるようにします。
| */ | ||
| class Solution { | ||
| public: | ||
| void dfs(TreeNode* root, int level, vector<vector<int>>& vvi) { |
There was a problem hiding this comment.
関数名は、動詞の原形または命令形で始まることが多いように思います。 traverse() はいかがでしょうか?
| */ | ||
| class Solution { | ||
| public: | ||
| void scan(TreeNode* root, int level, vector<vector<int>>& nodes) { |
There was a problem hiding this comment.
scan という英単語は、一列に並んでいるものを走査するというニュアンスを感じます。グラフ構造を辿っていくのであれば traverse() あたりが良いと思います。
There was a problem hiding this comment.
そうなんですね。traverseの方を使うようにします。
| if (!root) { | ||
| return; | ||
| } | ||
| if (vvi.size() < (level + 1)) { |
| vector<vector<int>> result; | ||
| if (!root) return result; | ||
|
|
||
| queue<TreeNode*> nodes; |
There was a problem hiding this comment.
@hemispherium さん
参考までにお聞きしたいのですが、
キューに異なる階層のノードが入っていて、かつそれらの深さはキュー外で管理されている
という書き方を最初に見たのはどこか覚えていますか?
これに関してはたぶんChatGPTに聞いたらそういう書き方をしてきたと思います。 |
この問題:https://leetcode.com/problems/binary-tree-level-order-traversal/description/
次に解く問題:https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/description/