题目:
把二叉树打印成多行,按层分行
思路:
- 层序遍历,使用队列
- 每次入队记录一下当前的层号,考虑到vector是基0,不妨从0层开始计数,这样存数据时比较方便,否则会发生level-1的尴尬
待补充:
本题好像还有许多思路,比如书本上的计数法,左神的两个指针指示换行,我还没有理解,需要之后巩固
class Solution {
public:
vector<vector<int> > Print(TreeNode* root) {
ret.clear();
if(!root)
return ret;
queue<pair<int,TreeNode *>> qu;
qu.push(make_pair(0,root));
while(!qu.empty()){
int level=qu.front().first;
TreeNode *node=qu.front().second;
qu.pop();
if(ret.size()==level)
ret.push_back(vector<int>());
ret[level].push_back(node->val);
if(node->left)
qu.push(make_pair(level+1,node->left));
if(node->right)
qu.push(make_pair(level+1,node->right));
}
return ret;
}
private:
vector<vector<int>> ret;
};
网友评论