题目描述:给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
解题思路:思路来自牛客网努力的牛牛
利用队列这个数据结构,队列是先进先出的。因为是按照从左到右的顺序层次遍历,所以用队列记录每一层的根结点,然后根据队列的大小(即这一层的节点数目),依次将队列中的节点取出,加入到vector中,将左子树和右子树放入队列。每一层遍历过后,将这一层vecotr加入总的vector中,最终就能获得层次遍历的结果。
class Solution {
public:
vector<vector<int> > levelOrder(TreeNode *root) {
vector<vector<int>>res;
if (root==NULL)
return res;
queue<TreeNode*>store;
vector<int>cur;
store.push(root);
while(!store.empty()){
cur.clear();
int n = store.size();
for (int i = 0; i < n;++i){
TreeNode*node = store.front();
store.pop();
cur.push_back(node->val);
if (node->left!=NULL)
store.push(node->left);
if (node->right!=NULL)
store.push(node->right);
}
res.push_back(cur);
}
return res;
}
};
来源:CSDN
作者:想成为优秀程序员的lxffffff
链接:https://blog.csdn.net/qq_39522046/article/details/104056457