/**********************************************************************************************************
Given a binary tree, return the level order traversal of its nodes’ values. (ie, from le to right, level by
level).
For example: Given binary tree {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
**********************************************************************************************************/
Class Solution{
public:
vector<vector<int> > levelOrder(TreeNode * root){
vector<vector<int>> result;
if(root == nullptr){
return result;
}
queue<TreeNode*> current, next;
vector<int> level;
current.push(root);
while(!current.empty()){
while(!current.empty()){
TreeNode * node = current.front();
current.pop();
level.push_back(node);
if(node->left != nullptr) next.push(node->left);
if(node->right != nullptr) next.push(node->right);
}
result.push_back(level->val);
level.clear();
swap(next,current);
}
return result;
}
};

使用双队列完成层序遍历,取出队首.ftont() ,出队列.pop()
参考资料:
LeetCode题解
本文介绍了一种使用双队列实现的二叉树层序遍历算法,通过不断交换当前队列和下一个队列,实现了从左到右、逐层遍历二叉树节点值的功能。

被折叠的 条评论
为什么被折叠?



