/**
*这是典型的宽度优先算法,利用队列来实现
*
*
*/
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
//Iterative
class Solution{
public:
vector<vector<int>> levelOrder(TreeNode* root){
vector<vector<int>> res;
if(root==NULL)
return res;
queue<TreeNode*> q;
q.push(root);
while(!q.empty()){
vector<int> oneLevel;
int size=q.size();
for(int i=0;i<size;++i){
TreeNode* node=q.front();
q.pop();
oneLevel.push_back(node->val);
if(node->left) q.push(node->left);
if(node->right) q.push(node->right);
}
res.push_back(oneLevel);
}
return res;
}
};
int main()
{
TreeNode root(3);
TreeNode node1(9);
TreeNode node2(20);
TreeNode node3(15);
TreeNode node4(7);
root.left = &node1;
root.right = &node2;
node2.left = &node3;
node2.right = &node4;
Solution s;
for (const auto &v : s.levelOrder(&root)) //c++11
{
for (auto i : v)
cout << i << " ";
cout << endl;
}
return 0;
}
leetcode:Binary Tree Level Order Traversal 二叉树层序遍历
最新推荐文章于 2021-11-17 20:57:12 发布
本文介绍了一种基于宽度优先搜索的二叉树遍历算法,并通过C++代码实现了该算法。具体而言,该算法使用队列来实现二叉树的层序遍历,能够按层次顺序返回树中节点的值。
318

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



