這題還蠻簡單的 我覺得應該放在easy的題目才是XD
整顆Tree的level可以用一個variable來儲存
拜訪該node的時候,因為是從parent往下走一層到該node,所以count++
離開的時候,就是回到該node的parent,往上走一層所以count–
這邊我是用preorder來做traversal的
然後判斷vector<vector<int>> 有沒有這層了,沒有就新增一個vector給他
大概就這樣 蠻簡單derrr
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
class Solution { public: vector<vector<int>> ans; int level = 0; vector<vector<int>> levelOrder(TreeNode* root) { if(root == NULL) return ans; else preorder(root); return ans; } void preorder(TreeNode* node) { if(node == NULL) return; level++; if(ans.size() < level) ans.push_back(vector<int>()); ans[level-1].push_back(node->val); preorder(node->left); preorder(node->right); level--; } }; |
update:
後來想想其實這題應該比較接近BFS的題目,應該用BFS解比較合適