Leetcode 102. 二叉树的层次遍历 解题思路及C++实现
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 102. 二叉树的层次遍历 解题思路及C++实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
解題思路:
使用隊(duì)列來存儲(chǔ)每一層的節(jié)點(diǎn),因?yàn)檩敵龅膙ector中,每一層是一個(gè)數(shù)組,所以在循環(huán)內(nèi),需要另外一個(gè)隊(duì)列,總共使用兩個(gè)隊(duì)列。
沒獲取一層的節(jié)點(diǎn),就更新第一個(gè)隊(duì)列a,將隊(duì)列b直接賦給a。
?
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {if(!root) return {};vector<vector<int> > res;res.push_back({root->val});queue<TreeNode*> a;if(root->left) a.push(root->left);if(root->right) a.push(root->right);while(!a.empty()){vector<int> num;queue<TreeNode*> b;while(!a.empty()){TreeNode* tmp = a.front();num.push_back(tmp->val);a.pop();if(tmp->left) b.push(tmp->left);if(tmp->right) b.push(tmp->right);}res.push_back(num);a = b;}return res;} };?
網(wǎng)上還有一種解法是只用了一個(gè)queue,用NULL來分隔二叉樹每一層,沒遇到一個(gè)NULL,就代表這層節(jié)點(diǎn)已訪問完。
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Leetcode 102. 二叉树的层次遍历 解题思路及C++实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 98. 验证二叉搜索树
- 下一篇: Leetcode 105. 从前序与中序