LC102 Binary Tree Level Order Traversal
本质上是用BFS进行层序遍历,难点在于如何记录层的信息。
简单想法是可以用两个queue进行轮流操作。这里记录一种递归的做法。
1 class Solution { 2 public: 3 vector<vector<int> > levelOrder(TreeNode *root) { 4 vector<vector<int>> result; 5 traverse(root, 1, result); 6 return result; 7 } 8 void traverse(TreeNode *root, size_t level, vector<vector<int>> &result) { 9 if (!root) return; 10 if (level > result.size()) 11 result.push_back(vector<int>()); 12 result[level-1].push_back(root->val); 13 traverse(root->left, level+1, result); 14 traverse(root->right, level+1, result); 15 } 16 };