[資料結構] BFS演算法實現層序遍歷輸出一顆二叉樹
題目描述
給定一個二叉樹,返回該二叉樹層序遍歷的結果,(從左到右,一層一層地遍歷)
例如:
給定的二叉樹是{3,9,20,#,#,15,7},
該二叉樹層序遍歷的結果是
[
[3],
[9,20],
[15,7]
]
示例1
思路: 在資料結構中BFS遍歷序列和層序遍歷序列一致故可以用BFS演算法實現層序遍歷。基本思想是,先讓頭節點入隊,然後再其出隊之後將其左右孩子入隊,就是在每一個結點出隊時隨即讓其左右孩子入隊,這樣可以保證佇列中的元素個數總與該層的結點數一致。
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode類
* @return int整型vector<vector<>>
*/
vector<vector<int> > levelOrder(TreeNode* root) {
vector<vector<int>>res;
if(!root)return res;//表示該樹為空樹
queue<TreeNode*> q;
q.push(root);
while (!q.empty())
{
vector<int> cen;
int size=q.size();//當前佇列元素個數代表該層元素個數
while(size--)//按照輸出格式進行輸出
{
TreeNode*node=q.front();
cen.push_back(node->val);
q.pop();
if(node->left)q.push(node->left);//讓出隊的結點的左右孩子入隊
if(node->right)q.push(node->right);
}
if(cen.size()>0)res.push_back(cen);//如果該層有結點
}
return res;
}
};
相關文章
- 二叉樹的層序遍歷二叉樹
- 資料結構 二叉樹遍歷資料結構二叉樹
- 【資料結構與演算法】二叉樹的 Morris 遍歷(前序、中序、後序)資料結構演算法二叉樹
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹
- [資料結構]二叉樹的前中後序遍歷(遞迴+迭代實現)資料結構二叉樹遞迴
- 資料結構與演算法-二叉樹遍歷資料結構演算法二叉樹
- leetcode 103. 二叉樹的鋸齒形層序遍歷 BFS方法LeetCode二叉樹
- 演算法 -- 實現二叉樹先序,中序和後序遍歷演算法二叉樹
- 資料結構——樹與二叉樹的遍歷資料結構二叉樹
- 遞迴和迭代實現二叉樹先序、中序、後序和層序遍歷遞迴二叉樹
- 【資料結構&演算法】11-樹基礎&二叉樹遍歷資料結構演算法二叉樹
- 二叉樹:構造二叉樹(通過前序和中序遍歷)、映象翻轉、層次遍歷二叉樹
- 【演算法】二叉樹、N叉樹先序、中序、後序、BFS、DFS遍歷的遞迴和迭代實現記錄(Java版)演算法二叉樹遞迴Java
- Leetcode 演算法題解系列 - 二叉樹的層序遍歷LeetCode演算法二叉樹
- 【亡羊補牢】挑戰資料結構與演算法 第51期 LeetCode 102. 二叉樹的層序遍歷(二叉樹)資料結構演算法LeetCode二叉樹
- LeetCode102.二叉樹的層序遍歷LeetCode二叉樹
- 【資料結構】二叉樹的建立與遍歷資料結構二叉樹
- 388,先序遍歷構造二叉樹二叉樹
- 層序遍歷樹的節點,佇列實現佇列
- 資料結構實驗六是否同一顆二叉樹資料結構二叉樹
- LeetCode-107-二叉樹的層序遍歷 IILeetCode二叉樹
- python-二叉樹:前、中、後、層序遍歷Python二叉樹
- 二叉樹--後序遍歷二叉樹
- 二叉樹的四種遍歷方法:先序,中序,後序,層序二叉樹
- 【C++】返回每一層二叉樹的平均值(層序遍歷)C++二叉樹
- 106. 從中序與後序遍歷序列構造二叉樹——Java實現二叉樹Java
- 二叉樹遍歷順序與方法小結二叉樹
- [資料結構] 根據前中後序遍歷中的兩種構造二叉樹資料結構二叉樹
- 144.二叉樹的前序遍歷145.二叉樹的後序遍歷 94.二叉樹的中序遍歷二叉樹
- 資料結構初階--二叉樹(前中後序遍歷遞迴+非遞迴實現+相關求算結點實現)資料結構二叉樹遞迴
- 144. 二叉樹的遍歷「前序、中序、後序」 Golang實現二叉樹Golang
- 從中序與後序遍歷序列構造二叉樹二叉樹
- 二叉樹的前序,中序,後序遍歷方法總結二叉樹
- 二叉樹的遍歷實現二叉樹
- 劍指offer:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。二叉樹
- 二叉樹的後序遍歷post order演算法二叉樹演算法
- 二叉樹的按層遍歷二叉樹
- 【樹01】對二叉樹前序/中序/後序遍歷演算法的一些思考二叉樹演算法