二叉树层序遍历c++
时间: 2023-10-22 14:29:52 浏览: 152
二叉树的层序遍历是指按照从上到下、从左到右的顺序访问二叉树的节点,并将节点按层级分组。对于给定的二叉树,我们可以使用队列来实现层序遍历。
以下是一个使用队列进行二叉树层序遍历的C++代码示例:
```c++
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> result;
queue<TreeNode*> que;
if (root != nullptr) {
que.push(root);
}
while (!que.empty()) {
vector<int> temp;
int length = que.size();
for (int i = 0; i < length; i++) {
TreeNode* tempNode = que.front();
que.pop();
temp.push_back(tempNode->val);
if (tempNode->left) {
que.push(tempNode->left);
}
if (tempNode->right) {
que.push(tempNode->right);
}
}
result.push_back(temp);
}
return result;
}
};
```
以上代码实现了一个名为`levelOrder`的函数,该函数接受一个二叉树的根节点作为参数,并返回一个二维向量,表示二叉树的层序遍历结果。在函数内部,我们首先创建一个空的二维向量`result`用于存储结果,然后创建一个队列`que`用于辅助遍历。如果给定的二叉树不为空,我们将根节点入队。接下来,我们使用循环来遍历队列中的节点,并将节点的值存储到一个临时向量`temp`中。在遍历过程中,如果当前节点有左子节点,我们将左子节点入队;如果当前节点有右子节点,我们将右子节点入队。当遍历完一层后,我们将临时向量`temp`存储到结果向量`result`中,并继续下一层的遍历。最后,我们返回结果向量`result`。
希望以上解答对您有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [二叉树的层次遍历(C++)](https://blog.csdn.net/weixin_42817333/article/details/125110191)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文