题目
分词:很明显是层次遍历,与图里的 BFS 很像,只是不用设置 visited 标志变量。只是稍微有点难度的是要分别输出每一层的变量,我最初的想法使用队列存储所有节点,是对每一层的节点都计数,只是这样子代码写起来稍微有点麻烦,后来才知道可以在while 循环中再加一层 for 循环解决,while 循环判断队列是否为空,该层 for 循环输出该层的所有节点。
代码如下:
基于计数:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> ret;
if(root == NULL){
return ret;
}
queue<TreeNode*> q;
vector<int> layer;
q.push(root);
layer.push_back(root->val);
ret.push_back(layer);
int cnt = 0;
int num = 1;
int num2 = 0;
layer.clear();